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

クラスKeyGenerator

java.lang.Object
javax.crypto.KeyGenerator

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

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

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

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

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

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

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

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

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

クライアントがKeyGenerator (initメソッドへのコールを介して)を明示的に初期化しない場合、各プロバイダは(とドキュメント)をデフォルトの初期化に指定する必要があります。 JDKプロバイダで使用されるKeyGeneratorのデフォルトの詳細は、「JDKプロバイダ」ドキュメントの「キー・サイズの制限」セクションを参照してください。 ただし、デフォルトはプロバイダごとに異なる場合があります。 また、プロバイダのデフォルト値は、将来のバージョンで変更される可能性があります。 そのため、プロバイダ固有のデフォルトに依存するかわりに、KeyGeneratorを明示的に初期化することをお薦めします。

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

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

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

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    KeyGenerator(KeyGeneratorSpi keyGenSpi, Provider provider, String algorithm)
    KeyGeneratorオブジェクトを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    final SecretKey
    秘密キーを生成します。
    final String
    このKeyGeneratorオブジェクトのアルゴリズム名を返します。
    static final KeyGenerator
    getInstance(String algorithm)
    指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。
    static final KeyGenerator
    getInstance(String algorithm, String provider)
    指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。
    static final KeyGenerator
    getInstance(String algorithm, Provider provider)
    指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。
    final Provider
    このKeyGeneratorオブジェクトのプロバイダを返します。
    final void
    init(int keysize)
    このキー・ジェネレータを特定のキー・サイズに応じて初期化します。
    final void
    init(int keysize, SecureRandom random)
    ユーザーが提供する乱数発生の元を使って、このキー・ジェネレータを特定のキー・サイズに応じて初期化します。
    final void
    このキー・ジェネレータを初期化します。
    final void
    このキー・ジェネレータを、指定されたパラメータ・セットを使って初期化します。
    final void
    指定されたパラメータ・セットとユーザーが提供する乱数発生の元を使って、このキー・ジェネレータを初期化します。

    クラスjava.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • 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オブジェクトを返します。

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

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

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

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

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

      パラメータ:
      algorithm - 要求されたキー・アルゴリズムの標準名。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKeyGeneratorの項を参照してください。
      provider - プロバイダ
      戻り値:
      新しいKeyGeneratorオブジェクト
      例外:
      IllegalArgumentException - providernullの場合
      NoSuchAlgorithmException - 指定されたアルゴリズムのKeyGeneratorSpi実装が、指定されたProviderオブジェクトから使用できない場合
      NullPointerException - algorithmnullである場合
      関連項目:
    • 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()
      秘密キーを生成します。
      戻り値:
      新しいキー