モジュール java.base
パッケージ javax.crypto

クラスKeyGenerator


  • public class KeyGenerator
    extends Object
    このクラスは、秘密(対称)キー・ジェネレータの機能を提供します。

    キー・ジェネレータは、このクラスのgetInstanceクラス・メソッドの1つを使用して構築されます。

    KeyGeneratorオブジェクトは再使用できます。つまり、キーの生成後、同じKeyGeneratorオブジェクトを再使用してさらにキーを生成することができます。

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

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

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

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

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

      アルゴリズム固有のパラメータのセットがすでに存在する状況では、AlgorithmParameterSpec引数を取る2つのinitメソッドが存在します。 このうち一方は引数にSecureRandomもとりますが、もう一方は、乱数発生の元として、もっとも高い優先順位でインストールされているプロバイダのSecureRandomの実装を使用します(SecureRandomの実装を提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元を使用)。

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

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

    • AES (128)
    • DES (56)
    • DESede (168)
    • HmacSHA1
    • HmacSHA256
    これらのアルゴリズムは、Javaセキュリティ標準アルゴリズム名仕様の「KeyGeneratorセクション」に記述されています。 サポートされているその他のアルゴリズムについては、実装のリリース・ドキュメントを参照してください。

    導入されたバージョン:
    1.4
    関連項目:
    SecretKey
    • コンストラクタの詳細

      • KeyGenerator

        protected KeyGenerator​(KeyGeneratorSpi keyGenSpi,
                               Provider provider,
                               String algorithm)
        KeyGeneratorオブジェクトを生成します。
        パラメータ:
        keyGenSpi - 委譲先
        provider - プロバイダ
        algorithm - アルゴリズム
    • メソッドの詳細

      • getAlgorithm

        public final String getAlgorithm()
        このKeyGeneratorオブジェクトのアルゴリズム名を返します。

        これは、このKeyGeneratorオブジェクトを作成したgetInstance呼出しのいずれかに指定された名前と同じです。

        戻り値:
        このKeyGeneratorオブジェクトのアルゴリズム名。
      • getInstance

        public static final KeyGenerator getInstance​(String algorithm)
                                              throws NoSuchAlgorithmException
        指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。

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

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

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

        public static final KeyGenerator getInstance​(String algorithm,
                                                     String provider)
                                              throws NoSuchAlgorithmException,
                                                     NoSuchProviderException
        指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。

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

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

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

        public static final KeyGenerator getInstance​(String algorithm,
                                                     Provider provider)
                                              throws NoSuchAlgorithmException
        指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。

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

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

        public final Provider getProvider()
        このKeyGeneratorオブジェクトのプロバイダを返します。
        戻り値:
        このKeyGeneratorオブジェクトのプロバイダ
      • init

        public final void init​(SecureRandom random)
        このキー・ジェネレータを初期化します。
        パラメータ:
        random - このジェネレータの乱数発生の元
      • init

        public final void init​(AlgorithmParameterSpec params)
                        throws InvalidAlgorithmParameterException
        このキー・ジェネレータを、指定されたパラメータ・セットを使って初期化します。

        このキー・ジェネレータが乱数バイトを必要とする場合は、インストールされているプロバイダのうち、もっとも優先順位の高いプロバイダのSecureRandomの実装を乱数発生の元として使用して乱数バイトを取得します。 (SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。)

        パラメータ:
        params - キー・ジェネレータのパラメータ
        例外:
        InvalidAlgorithmParameterException - 指定されたパラメータがこのキー・ジェネレータに不適切な場合
      • init

        public final void init​(AlgorithmParameterSpec params,
                               SecureRandom random)
                        throws InvalidAlgorithmParameterException
        指定されたパラメータ・セットとユーザーが提供する乱数発生の元を使って、このキー・ジェネレータを初期化します。
        パラメータ:
        params - キー・ジェネレータのパラメータ
        random - このキー・ジェネレータの乱数発生の元
        例外:
        InvalidAlgorithmParameterException - paramsがこのキー・ジェネレータに不適切な場合
      • init

        public final void init​(int keysize)
        このキー・ジェネレータを特定のキー・サイズに応じて初期化します。

        このキー・ジェネレータが乱数バイトを必要とする場合は、インストールされているプロバイダのうち、もっとも優先順位の高いプロバイダのSecureRandomの実装を乱数発生の元として使用して乱数バイトを取得します。 (SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。)

        パラメータ:
        keysize - キー・サイズ。 ビット長で指定されたアルゴリズム固有のメトリックス
        例外:
        InvalidParameterException - キー・サイズが間違っているか、サポートされていない場合。
      • init

        public final void init​(int keysize,
                               SecureRandom random)
        ユーザーが提供する乱数発生の元を使って、このキー・ジェネレータを特定のキー・サイズに応じて初期化します。
        パラメータ:
        keysize - キー・サイズ。 ビット長で指定されたアルゴリズム固有のメトリックス
        random - このキー・ジェネレータの乱数発生の元
        例外:
        InvalidParameterException - キー・サイズが間違っているか、サポートされていない場合。
      • generateKey

        public final SecretKey generateKey()
        秘密キーを生成します。
        戻り値:
        新しいキー