モジュール 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 - 指定された鍵をこの鍵ファクトリで処理できない場合。