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アルゴリズムをサポートする必要があります。
 
DiffieHellmanDSARSA
- 導入されたバージョン:
 - 1.2
 - 関連項目:
 
- 
コンストラクタのサマリー
コンストラクタ修飾子コンストラクタ説明protectedKeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm) KeyFactoryオブジェクトを作成します。 - 
メソッドのサマリー
修飾子と型メソッド説明final PrivateKeygeneratePrivate(KeySpec keySpec) 指定されたキー仕様(キー・データ)から非公開キー・オブジェクトを生成します。final PublicKeygeneratePublic(KeySpec keySpec) 指定されたキー仕様(キー・データ)から公開キー・オブジェクトを生成します。final StringこのKeyFactoryに関連したアルゴリズムの名前を取得します。static KeyFactorygetInstance(String algorithm) 指定されたアルゴリズムの公開/秘密キーを変換するKeyFactoryオブジェクトを返します。static KeyFactorygetInstance(String algorithm, String provider) 指定されたアルゴリズムの公開/秘密キーを変換するKeyFactoryオブジェクトを返します。static KeyFactorygetInstance(String algorithm, Provider provider) 指定されたアルゴリズムの公開/秘密キーを変換するKeyFactoryオブジェクトを返します。final <T extends KeySpec>
TgetKeySpec(Key key, Class<T> keySpec) 指定されたキー・オブジェクトの仕様(キー・データ)を返します。final Providerこのキー・ファクトリ・オブジェクトのプロバイダを返します。final KeytranslateKey(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.preferredSecurityプロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、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- 指定されたキーをこのキー・ファクトリで処理できない場合。
 
 -