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オブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のProviderの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オブジェクトを返します。指定されたProviderオブジェクトのKeyFactorySpi実装をカプセル化する新しいKeyFactoryオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
- パラメータ:
algorithm
- 要求されるキー・アルゴリズムの名前。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のKeyFactoryセクションを参照してください。provider
- プロバイダ- 戻り値:
- 新しい
KeyFactory
オブジェクト - 例外:
IllegalArgumentException
- 指定されたプロバイダがnull
の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのKeyFactorySpi
実装が、指定されたProvider
オブジェクトから使用できない場合NullPointerException
-algorithm
がnull
である場合- 導入されたバージョン:
- 1.4
- 関連項目:
-
getProvider
public final Provider 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
- 指定されたキーをこのキー・ファクトリで処理できない場合。
-