モジュール java.base
パッケージ java.security

クラスKeyFactory


  • public class KeyFactory
    extends Object
    キー・ファクトリは、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
    これらのアルゴリズムは、Javaセキュリティ標準アルゴリズム名仕様の「KeyFactoryセクション」に記述されています。 サポートされているその他のアルゴリズムについては、実装のリリース・ドキュメントを参照してください。

    導入されたバージョン:
    1.2
    関連項目:
    Key, PublicKey, PrivateKey, KeySpec, DSAPublicKeySpec, X509EncodedKeySpec
    • コンストラクタの詳細

      • 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 - algorithmnullである場合
        関連項目:
        Provider
      • 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 - algorithmnullである場合
        関連項目:
        Provider
      • 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 - algorithmnullである場合
        導入されたバージョン:
        1.4
        関連項目:
        Provider
      • 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 - 指定されたキーをこのキー・ファクトリで処理できない場合。