モジュール 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の実装を使用するinitメソッド(SecureRandomの実装を提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元を使用)、および乱数発生の元だけをとるinitメソッドもあります。

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

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

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

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

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

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

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

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

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

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

    cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait
  • コンストラクタの詳細

    • 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()
      秘密キーを生成します。
      戻り値:
      新しいキー