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

クラスKeyPairGenerator


  • public abstract class KeyPairGenerator
    extends KeyPairGeneratorSpi
    KeyPairGeneratorクラスは、公開鍵と非公開鍵のペアを生成するために使用します。 鍵ペア・ジェネレータは、getInstanceファクトリ・メソッド(指定されたクラスのインスタンスを返すstaticメソッド)を使用して構築されます。

    特定のアルゴリズムに対応する鍵ペア・ジェネレータは、このアルゴリズムで使用される公開鍵および非公開鍵のペアを作成します。 また、アルゴリズム固有型のパラメータを生成された各鍵に関連付けます。

    鍵のペアの生成方法には、アルゴリズム独立型とアルゴリズム固有型の2つがあります。 この2つの唯一の相違点は、オブジェクトの初期化にあります。

    • アルゴリズムに依存しない初期化

      すべての鍵ジェネレータは、キー・サイズおよび乱数発生の元の概念を共有します。 キー・サイズの解釈はアルゴリズムによって異なります(DSAアルゴリズムの場合、サイズはビットで表したモジュラスの長さに対応するなど)。 このKeyPairGeneratorクラスには、普遍的に共有されるこれら2つの引数の型をとるinitializeメソッドが存在します。 また、引数にkeysizeだけをとり、乱数発生の元として、もっとも高い優先順位でインストールされているプロバイダのSecureRandomの実装を使用するinitializeメソッドもあります。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。

      上記のアルゴリズムに依存しないinitializeメソッドを呼び出した場合、パラメータが指定されないため、それぞれの鍵に関連したアルゴリズム固有のパラメータが存在する場合、これをどのように扱うかはプロバイダに任されます。

      アルゴリズムがDSAアルゴリズムで、keysize (モジュラス・サイズ)が512,768,1024、または2048の場合、Sunプロバイダは、pq、およびgパラメータに事前計算された値のセットを使用します。 モジュラスのサイズが上記の値の1つでない場合は、Sunプロバイダは、新しいパラメータのセットを作成します。 他のプロバイダは、上記のモジュラス・サイズ以上のパラメータ・セットを事前に計算している場合があります。 また、事前に計算されたパラメータがなく、常に新しいパラメータ・セットを作成するプロバイダが存在する可能性もあります。

    • アルゴリズム固有の初期化

      アルゴリズム固有のパラメータのセットがすでに存在する状況では(DSAのコミュニティ・パラメータなど)、AlgorithmParameterSpec引数を取るinitializeメソッドが2つあります。 1つはまた、SecureRandom引数を持ち、もう1つは、ランダム性のソースとして最も優先度の高いインストールされたプロバイダのSecureRandom実装を使用します。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。

    クライアントがinitializeメソッドの呼出しで、明示的にKeyPairGeneratorを初期化しない場合には、各プロバイダはデフォルトで初期化を提供しドキュメント化する必要があります。 JDKプロバイダが使用するKeyPairGeneratorのデフォルトについては、「JDKプロバイダ」ドキュメントの「キー・サイズの制限」セクションを参照してください。 ただし、デフォルトはプロバイダごとに異なる場合があります。 また、プロバイダのデフォルト値は、将来のバージョンで変更される可能性があります。 したがって、プロバイダ固有のデフォルトに頼るのではなく、KeyPairGeneratorを明示的に初期化することをお勧めします。

    このクラスは、歴史的な事情からKeyPairGeneratorSpiクラスから拡張された抽象クラスになっていることに注意してください。 アプリケーションの開発者は、このKeyPairGeneratorクラスで定義されたメソッドだけに配慮してください。スーパー・クラスのすべてのメソッドは、鍵ペア・ジェネレータの独自の実装を提供する必要がある暗号サービス・プロバイダで使用されることを想定しています。

    Javaプラットフォームの実装は、すべて次の標準のKeyPairGeneratorアルゴリズムとカッコ内の鍵サイズをサポートする必要があります。

    • DiffieHellman (1024, 2048, 4096)
    • DSA (1024, 2048)
    • RSA (1024, 2048, 4096)
    これらのアルゴリズムは、Javaセキュリティ標準アルゴリズム名仕様の「KeyPairGeneratorセクション」に記述されています。 サポートされているその他のアルゴリズムについては、実装のリリース・ドキュメントを参照してください。

    導入されたバージョン:
    1.1
    関連項目:
    AlgorithmParameterSpec
    • コンストラクタのサマリー

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected KeyPairGenerator​(String algorithm)
      指定されたアルゴリズムに対するKeyPairGeneratorを作成します。
    • メソッドのサマリー

      すべてのメソッド 静的メソッド インスタンス・メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      KeyPair generateKeyPair()
      鍵ペアを生成します。
      KeyPair genKeyPair()
      鍵ペアを生成します。
      String getAlgorithm()
      この鍵ペア・ジェネレータのアルゴリズムの標準名を返します。
      static KeyPairGenerator getInstance​(String algorithm)
      指定のアルゴリズムの公開鍵と非公開鍵のペアを生成するKeyPairGeneratorオブジェクトを返します。
      static KeyPairGenerator getInstance​(String algorithm, String provider)
      指定のアルゴリズムの公開鍵と非公開鍵のペアを生成するKeyPairGeneratorオブジェクトを返します。
      static KeyPairGenerator getInstance​(String algorithm, Provider provider)
      指定のアルゴリズムの公開鍵と非公開鍵のペアを生成するKeyPairGeneratorオブジェクトを返します。
      Provider getProvider()
      この鍵ペア・ジェネレータ・オブジェクトのプロバイダを返します。
      void initialize​(int keysize)
      任意の鍵のサイズに対する鍵ペア・ジェネレータを初期化します。デフォルトのパラメータ・セットと、乱数発生の元として、もっとも高い優先順位でインストールされているプロバイダのSecureRandomの実装を使用します。
      void initialize​(int keysize, SecureRandom random)
      任意のキー・サイズ対する鍵ペア・ジェネレータを初期化します。指定された乱数発生の元と、デフォルトのパラメータ・セットを使用します。
      void initialize​(AlgorithmParameterSpec params)
      指定されたパラメータのセットと、乱数発生の元として、もっとも高い優先順位でインストールされているプロバイダのSecureRandomの実装を使用して、鍵ペア・ジェネレータを初期化します。
      void initialize​(AlgorithmParameterSpec params, SecureRandom random)
      指定されたパラメータ・セットと乱数発生の元を使って鍵ペア・ジェネレータを初期化します。
    • コンストラクタの詳細

      • KeyPairGenerator

        protected KeyPairGenerator​(String algorithm)
        指定されたアルゴリズムに対するKeyPairGeneratorを作成します。
        パラメータ:
        algorithm - アルゴリズムの標準名を表す文字列。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のKeyPairGeneratorセクションを参照してください。
    • メソッドの詳細

      • getAlgorithm

        public String getAlgorithm()
        この鍵ペア・ジェネレータのアルゴリズムの標準名を返します。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のKeyPairGeneratorセクションを参照してください。
        戻り値:
        アルゴリズムの標準名を表す文字列。
      • getInstance

        public static KeyPairGenerator getInstance​(String algorithm)
                                            throws NoSuchAlgorithmException
        指定のアルゴリズムの公開鍵と非公開鍵のペアを生成するKeyPairGeneratorオブジェクトを返します。

        このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のProviderのKeyPairGeneratorSpi実装をカプセル化する新しいKeyPairGeneratorオブジェクトが返されます。

        登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

        実装上の注意:
        JDKリファレンス実装では、jdk.security.provider.preferred Securityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
        パラメータ:
        algorithm - アルゴリズムの標準名を表す文字列。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のKeyPairGeneratorセクションを参照してください。
        戻り値:
        新しいKeyPairGeneratorオブジェクト
        例外:
        NoSuchAlgorithmException - Providerが、指定されたアルゴリズムのKeyPairGeneratorSpi実装をサポートしていない場合
        NullPointerException - algorithmnullである場合
        関連項目:
        Provider
      • getInstance

        public static KeyPairGenerator getInstance​(String algorithm,
                                                   String provider)
                                            throws NoSuchAlgorithmException,
                                                   NoSuchProviderException
        指定のアルゴリズムの公開鍵と非公開鍵のペアを生成するKeyPairGeneratorオブジェクトを返します。

        指定されたプロバイダのKeyPairGeneratorSpi実装をカプセル化する新しいKeyPairGeneratorオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。

        登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

        パラメータ:
        algorithm - アルゴリズムの標準名を表す文字列。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のKeyPairGeneratorセクションを参照してください。
        provider - プロバイダ名の文字列名。
        戻り値:
        新しいKeyPairGeneratorオブジェクト
        例外:
        IllegalArgumentException - プロバイダ名がnullまたは空の場合
        NoSuchAlgorithmException - 指定されたアルゴリズムのKeyPairGeneratorSpi実装が、指定されたプロバイダから利用可能でない場合
        NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
        NullPointerException - algorithmnullである場合
        関連項目:
        Provider
      • getInstance

        public static KeyPairGenerator getInstance​(String algorithm,
                                                   Provider provider)
                                            throws NoSuchAlgorithmException
        指定のアルゴリズムの公開鍵と非公開鍵のペアを生成するKeyPairGeneratorオブジェクトを返します。

        指定されたProviderオブジェクトのKeyPairGeneratorSpi実装をカプセル化する新しいKeyPairGeneratorオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。

        パラメータ:
        algorithm - アルゴリズムの標準名を表す文字列。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のKeyPairGeneratorセクションを参照してください。
        provider - プロバイダ。
        戻り値:
        新しいKeyPairGeneratorオブジェクト
        例外:
        IllegalArgumentException - 指定されたプロバイダがnullの場合
        NoSuchAlgorithmException - 指定されたアルゴリズムのKeyPairGeneratorSpi実装が、指定されたProviderオブジェクトから使用できない場合
        NullPointerException - algorithmnullである場合
        導入されたバージョン:
        1.4
        関連項目:
        Provider
      • getProvider

        public final Provider getProvider()
        この鍵ペア・ジェネレータ・オブジェクトのプロバイダを返します。
        戻り値:
        この鍵ペア・ジェネレータ・オブジェクトのプロバイダ。
      • initialize

        public void initialize​(int keysize)
        任意の鍵のサイズに対する鍵ペア・ジェネレータを初期化します。デフォルトのパラメータ・セットと、乱数発生の元として、もっとも高い優先順位でインストールされているプロバイダのSecureRandomの実装を使用します。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。
        パラメータ:
        keysize - 鍵サイズ。 モジュラスの長さのような、ビット長で指定されたアルゴリズムに固有のメトリック。
        例外:
        InvalidParameterException - このKeyPairGeneratorオブジェクトがkeysizeメソッドをサポートしていない場合。
      • initialize

        public void initialize​(int keysize,
                               SecureRandom random)
        任意のキー・サイズ対する鍵ペア・ジェネレータを初期化します。指定された乱数発生の元と、デフォルトのパラメータ・セットを使用します。
        定義:
        initialize、クラス: KeyPairGeneratorSpi
        パラメータ:
        keysize - 鍵サイズ。 モジュラスの長さのような、ビット長で指定されたアルゴリズムに固有のメトリック。
        random - 乱数発生の元。
        例外:
        InvalidParameterException - このKeyPairGeneratorオブジェクトがkeysizeメソッドをサポートしていない場合。
        導入されたバージョン:
        1.2
      • initialize

        public void initialize​(AlgorithmParameterSpec params)
                        throws InvalidAlgorithmParameterException
        指定されたパラメータのセットと、乱数発生の元として、もっとも高い優先順位でインストールされているプロバイダのSecureRandomの実装を使用して、鍵ペア・ジェネレータを初期化します。 SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。

        この具象メソッドは、事前に定義されたこの抽象クラスに追加されたものです。 このメソッドは、KeyPairGeneratorSpiのinitializeメソッドを呼び出します。メソッドの呼出しの際には、引数としてparamsと乱数発生の元(インストールされているプロバイダのうち、もっとも優先順位の高いプロバイダから取得。プロバイダが乱数発生の元を提供しない場合は、システムが提供するもの)を渡します。 このinitializeメソッドは、プロバイダによってオーバーライドされない場合は、必ずUnsupportedOperationExceptionをスローします。

        パラメータ:
        params - 鍵を生成するためのパラメータ・セット。
        例外:
        InvalidAlgorithmParameterException - 指定されたパラメータがこの鍵ペア・ジェネレータに不適切な場合。
        導入されたバージョン:
        1.2
      • initialize

        public void initialize​(AlgorithmParameterSpec params,
                               SecureRandom random)
                        throws InvalidAlgorithmParameterException
        指定されたパラメータ・セットと乱数発生の元を使って鍵ペア・ジェネレータを初期化します。

        この具象メソッドは、事前に定義されたこの抽象クラスに追加されたものです。 このメソッドは、paramsrandomを渡して、KeyPairGeneratorSpiクラスのinitializeメソッドを呼び出します。 このinitializeメソッドは、プロバイダによってオーバーライドされない場合は、必ずUnsupportedOperationExceptionをスローします。

        オーバーライド:
        initialize、クラス: KeyPairGeneratorSpi
        パラメータ:
        params - 鍵を生成するためのパラメータ・セット。
        random - 乱数発生の元。
        例外:
        InvalidAlgorithmParameterException - 指定されたパラメータがこの鍵ペア・ジェネレータに不適切な場合。
        導入されたバージョン:
        1.2
      • genKeyPair

        public final KeyPair genKeyPair()
        鍵ペアを生成します。

        KeyPairGeneratorが明示的に初期化されていない場合は、プロバイダ指定されたデフォルトを生成された鍵のサイズおよびその他の(アルゴリズムに固有の)値に使用します。

        これは呼び出されるたびに、新しい鍵ペアを生成します。

        このメソッドは、機能的にはgenerateKeyPairと同等です。

        戻り値:
        生成された鍵ペア
        導入されたバージョン:
        1.2
      • generateKeyPair

        public KeyPair generateKeyPair()
        鍵ペアを生成します。

        KeyPairGeneratorが明示的に初期化されていない場合は、プロバイダ指定されたデフォルトを生成された鍵のサイズおよびその他の(アルゴリズムに固有の)値に使用します。

        これは呼び出されるたびに、新しい鍵ペアを生成します。

        このメソッドは、機能的にはgenKeyPairと同等です。

        定義:
        generateKeyPair、クラス: KeyPairGeneratorSpi
        戻り値:
        生成された鍵ペア