モジュール 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
関連項目: