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
- 関連項目:
- Key,- PublicKey,- PrivateKey,- KeySpec,- DSAPublicKeySpec,- X509EncodedKeySpec
- 
コンストラクタのサマリーコンストラクタ修飾子コンストラクタ説明protectedKeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)KeyFactoryオブジェクトを作成します。
- 
メソッドのサマリー修飾子と型メソッド説明generatePrivate(KeySpec keySpec)指定されたキー仕様(キー・データ)から非公開キー・オブジェクトを生成します。generatePublic(KeySpec keySpec)指定されたキー仕様(キー・データ)から公開キー・オブジェクトを生成します。このKeyFactoryに関連したアルゴリズムの名前を取得します。static KeyFactorygetInstance(String algorithm)指定のアルゴリズムの公開キーまたは非公開キーを変換するKeyFactoryオブジェクトを返します。static KeyFactorygetInstance(String algorithm, String provider)指定のアルゴリズムの公開キーまたは非公開キーを変換するKeyFactoryオブジェクトを返します。static KeyFactorygetInstance(String algorithm, Provider provider)指定のアルゴリズムの公開キーまたは非公開キーを変換するKeyFactoryオブジェクトを返します。<T extends KeySpec>
 TgetKeySpec(Key key, Class<T> keySpec)指定されたキー・オブジェクトの仕様(キー・データ)を返します。このキー・ファクトリ・オブジェクトのプロバイダを返します。translateKey(Key key)プロバイダが未知であるか、信頼できない可能性があるキー・オブジェクトを、このキー・ファクトリの対応するキー・オブジェクトに変換します。
- 
コンストラクタの詳細- 
KeyFactoryprotected KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)KeyFactoryオブジェクトを作成します。- パラメータ:
- keyFacSpi- 委譲先
- provider- プロバイダ
- algorithm- この- KeyFactoryに関連付けるアルゴリズムの名前
 
 
- 
- 
メソッドの詳細- 
getInstancepublic static KeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException指定のアルゴリズムの公開キーまたは非公開キーを変換するKeyFactoryオブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のProviderのKeyFactorySpi実装をカプセル化する新しいKeyFactoryオブジェクトが返されます。 登録済みプロバイダのリストは、 Security.getProviders()メソッド経由で取得できます。- 実装上のノート:
- JDKリファレンス実装では、jdk.security.provider.preferredSecurityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
- パラメータ:
- algorithm- 要求されるキー・アルゴリズムの名前。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のKeyFactoryセクションを参照してください。
- 戻り値:
- 新しいKeyFactoryオブジェクト
- 例外:
- NoSuchAlgorithmException-- Providerが、指定されたアルゴリズムの- KeyFactorySpi実装をサポートしていない場合
- NullPointerException-- algorithmが- nullである場合
- 関連項目:
- Provider
 
- 
getInstancepublic 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である場合
- 関連項目:
- Provider
 
- 
getInstancepublic 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
- 関連項目:
- Provider
 
- 
getProviderpublic final Provider getProvider()このキー・ファクトリ・オブジェクトのプロバイダを返します。- 戻り値:
- このキー・ファクトリ・オブジェクトのプロバイダ
 
- 
getAlgorithmpublic final String getAlgorithm()このKeyFactoryに関連したアルゴリズムの名前を取得します。- 戻り値:
- このKeyFactoryに関連付けられたアルゴリズムの名前
 
- 
generatePublicpublic final PublicKey generatePublic(KeySpec keySpec) throws InvalidKeySpecException指定されたキー仕様(キー・データ)から公開キー・オブジェクトを生成します。- パラメータ:
- keySpec- 公開キーの仕様(キー・データ)。
- 戻り値:
- 公開キー。
- 例外:
- InvalidKeySpecException- 指定されたキー仕様がこのキー・ファクトリによる公開キーの生成に不適切な場合。
 
- 
generatePrivatepublic final PrivateKey generatePrivate(KeySpec keySpec) throws InvalidKeySpecException指定されたキー仕様(キー・データ)から非公開キー・オブジェクトを生成します。- パラメータ:
- keySpec- 非公開キーの仕様(キー・データ)。
- 戻り値:
- 非公開キー。
- 例外:
- InvalidKeySpecException- 指定されたキー仕様がこのキー・ファクトリによる非公開キーの生成に不適切な場合。
 
- 
getKeySpecpublic final <T extends KeySpec> T getKeySpec(Key key, Class<T> keySpec) throws InvalidKeySpecException指定されたキー・オブジェクトの仕様(キー・データ)を返します。keySpecは、キーのデータが返されるべき仕様クラスを識別します。 たとえば、DSAPublicKeySpec.classは、キーのデータがDSAPublicKeySpecクラスのインスタンスに返されるべきであることを指示します。- 型パラメータ:
- T- 返されるキー仕様の型
- パラメータ:
- key- キー
- keySpec- キー・データが返される仕様クラス。
- 戻り値:
- 要求される仕様クラスのインスタンスにおける基本のキー仕様(キー・データ)。
- 例外:
- InvalidKeySpecException- 要求されるキー仕様が指定されたキーに不適切な場合、または認識されないアルゴリズムや形式のキーを指定した場合など、指定されたキーを処理できない場合。
 
- 
translateKeypublic final Key translateKey(Key key) throws InvalidKeyExceptionプロバイダが未知であるか、信頼できない可能性があるキー・オブジェクトを、このキー・ファクトリの対応するキー・オブジェクトに変換します。- パラメータ:
- key- プロバイダが未知であるか、信頼できないキー。
- 戻り値:
- 変換したキー。
- 例外:
- InvalidKeyException- 指定されたキーをこのキー・ファクトリで処理できない場合。
 
 
-