Key
型の不透明な暗号キーであるキーと、基本のキー・マテリアルの透明な表現であるキー仕様との間の変換を行うために使用します。
キー・ファクトリには双方向性があります。 つまり、指定したキー仕様(キー・データ)から不透明なキー・オブジェクトを構築することも、適切な形式でキー・オブジェクトの基本のキー・データを取り出すこともできます。
同一のキーに対して、複数の互換性のあるキー仕様が存在することがあります。 たとえばDSA公開キーは、DSAPublicKeySpec
またはX509EncodedKeySpec
を使って指定できます。 キー・ファクトリは、互換性のあるキー仕様間の変換に使用できます。
次に、キー・ファクトリを使って、DSA公開キーを符号化した状態からインスタンスを生成する方法の例を示します。 AliceがBobからデジタル署名を受け取ったとします。 Bobは、彼の署名を検証するための符号化形式の公開キーも送りました。 Aliceは、これらを次のように処理します。
X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(bobEncodedPubKey); KeyFactory keyFactory = KeyFactory.getInstance("DSA"); PublicKey bobPubKey = keyFactory.generatePublic(bobPubKeySpec); Signature sig = Signature.getInstance("DSA"); sig.initVerify(bobPubKey); sig.update(data); sig.verify(signature);
Javaプラットフォームの実装は、すべて次の標準のKeyFactory
アルゴリズムをサポートする必要があります。
DiffieHellman
DSA
RSA
- 導入されたバージョン:
- 1.2
- 関連項目:
-
コンストラクタのサマリー
修飾子コンストラクタ説明protected
KeyFactory
(KeyFactorySpi keyFacSpi, Provider provider, String algorithm) KeyFactory
オブジェクトを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明final PrivateKey
generatePrivate
(KeySpec keySpec) 指定されたキー仕様(キー・データ)から非公開キー・オブジェクトを生成します。final PublicKey
generatePublic
(KeySpec keySpec) 指定されたキー仕様(キー・データ)から公開キー・オブジェクトを生成します。final String
このKeyFactory
に関連したアルゴリズムの名前を取得します。static KeyFactory
getInstance
(String algorithm) 指定されたアルゴリズムの公開/秘密キーを変換するKeyFactory
オブジェクトを返します。static KeyFactory
getInstance
(String algorithm, String provider) 指定されたアルゴリズムの公開/秘密キーを変換するKeyFactory
オブジェクトを返します。static KeyFactory
getInstance
(String algorithm, Provider provider) 指定されたアルゴリズムの公開/秘密キーを変換するKeyFactory
オブジェクトを返します。final <T extends KeySpec>
TgetKeySpec
(Key key, Class<T> keySpec) 指定されたキー・オブジェクトの仕様(キー・データ)を返します。final Provider
このキー・ファクトリ・オブジェクトのプロバイダを返します。final Key
translateKey
(Key key) プロバイダが未知であるか、信頼できない可能性があるキー・オブジェクトを、このキー・ファクトリの対応するキー・オブジェクトに変換します。
-
コンストラクタの詳細
-
KeyFactory
protected KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm) KeyFactory
オブジェクトを作成します。- パラメータ:
keyFacSpi
- 委譲先provider
- プロバイダalgorithm
- このKeyFactory
に関連付けるアルゴリズムの名前
-
-
メソッドの詳細
-
getInstance
public static KeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException 指定されたアルゴリズムの公開/秘密キーを変換するKeyFactory
オブジェクトを返します。このメソッドは、最も優先されるプロバイダから始まる登録済セキュリティ・プロバイダのリストを横断します。 指定されたアルゴリズムをサポートする最初のプロバイダから
KeyFactorySpi
実装をカプセル化する新しいKeyFactory
オブジェクトが返されます。登録済みプロバイダのリストは、
Security.getProviders()
メソッド経由で取得できます。- 実装上のノート:
- JDKリファレンス実装では、さらに
jdk.security.provider.preferred
Security
プロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()
によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
algorithm
- 要求されるキー・アルゴリズムの名前。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKeyFactoryの項を参照してください。- 戻り値:
- 新しい
KeyFactory
オブジェクト - 例外:
NoSuchAlgorithmException
-Provider
が、指定されたアルゴリズムのKeyFactorySpi
実装をサポートしていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
-
getInstance
public static KeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 指定されたアルゴリズムの公開/秘密キーを変換するKeyFactory
オブジェクトを返します。指定したプロバイダから
KeyFactorySpi
実装をカプセル化する新しいKeyFactory
オブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。登録済みプロバイダのリストは、
Security.getProviders()
メソッド経由で取得できます。- パラメータ:
algorithm
- 要求されるキー・アルゴリズムの名前。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKeyFactoryの項を参照してください。provider
- プロバイダ名。- 戻り値:
- 新しい
KeyFactory
オブジェクト - 例外:
IllegalArgumentException
- プロバイダ名がnull
または空の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのKeyFactorySpi
実装が、指定されたプロバイダから利用可能でない場合NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
-
getInstance
public static KeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 指定されたアルゴリズムの公開/秘密キーを変換するKeyFactory
オブジェクトを返します。指定したプロバイダから
KeyFactorySpi
実装をカプセル化する新しいKeyFactory
オブジェクトが返されます。 指定されたプロバイダをプロバイダ・リストに登録する必要はありません。- パラメータ:
algorithm
- 要求されるキー・アルゴリズムの名前。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKeyFactoryの項を参照してください。provider
- プロバイダ- 戻り値:
- 新しい
KeyFactory
オブジェクト - 例外:
IllegalArgumentException
- 指定されたプロバイダがnull
の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのKeyFactorySpi
実装が、指定されたProvider
オブジェクトから使用できない場合NullPointerException
-algorithm
がnull
である場合- 導入されたバージョン:
- 1.4
- 関連項目:
-
getProvider
-
getAlgorithm
public final String getAlgorithm()このKeyFactory
に関連したアルゴリズムの名前を取得します。- 戻り値:
- この
KeyFactory
に関連付けられたアルゴリズムの名前
-
generatePublic
public final PublicKey generatePublic(KeySpec keySpec) throws InvalidKeySpecException 指定されたキー仕様(キー・データ)から公開キー・オブジェクトを生成します。- パラメータ:
keySpec
- 公開キーの仕様(キー・データ)。- 戻り値:
- 公開キー。
- 例外:
InvalidKeySpecException
- 指定されたキー仕様がこのキー・ファクトリによる公開キーの生成に不適切な場合。
-
generatePrivate
public final PrivateKey generatePrivate(KeySpec keySpec) throws InvalidKeySpecException 指定されたキー仕様(キー・データ)から非公開キー・オブジェクトを生成します。- パラメータ:
keySpec
- 非公開キーの仕様(キー・データ)。- 戻り値:
- 非公開キー。
- 例外:
InvalidKeySpecException
- 指定されたキー仕様がこのキー・ファクトリによる非公開キーの生成に不適切な場合。
-
getKeySpec
public final <T extends KeySpec> T getKeySpec(Key key, Class<T> keySpec) throws InvalidKeySpecException 指定されたキー・オブジェクトの仕様(キー・データ)を返します。keySpec
は、キーのデータが返されるべき仕様クラスを識別します。 たとえば、DSAPublicKeySpec.class
は、キーのデータがDSAPublicKeySpec
クラスのインスタンスに返されるべきであることを指示します。- 型パラメータ:
T
- 返されるキー仕様の型- パラメータ:
key
- キーkeySpec
- キー・データが返される仕様クラス。- 戻り値:
- 要求される仕様クラスのインスタンスにおける基本のキー仕様(キー・データ)。
- 例外:
InvalidKeySpecException
- 要求されるキー仕様が指定されたキーに不適切な場合、または認識されないアルゴリズムや形式のキーを指定した場合など、指定されたキーを処理できない場合。
-
translateKey
public final Key translateKey(Key key) throws InvalidKeyException プロバイダが未知であるか、信頼できない可能性があるキー・オブジェクトを、このキー・ファクトリの対応するキー・オブジェクトに変換します。- パラメータ:
key
- プロバイダが未知であるか、信頼できないキー。- 戻り値:
- 変換したキー。
- 例外:
InvalidKeyException
- 指定されたキーをこのキー・ファクトリで処理できない場合。
-