キー・ジェネレータは、このクラスの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
- 導入されたバージョン:
- 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
init
(SecureRandom random) このキー・ジェネレータを初期化します。final void
init
(AlgorithmParameterSpec params) このキー・ジェネレータを、指定されたパラメータ・セットを使って初期化します。final void
init
(AlgorithmParameterSpec params, SecureRandom random) 指定されたパラメータ・セットとユーザーが提供する乱数発生の元を使って、このキー・ジェネレータを初期化します。
-
コンストラクタの詳細
-
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
-algorithm
がnull
である場合- 関連項目:
-
getInstance
public static final KeyGenerator getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 指定されたアルゴリズムの秘密キーを生成するKeyGenerator
オブジェクトを返します。指定したプロバイダから
KeyGeneratorSpi
実装をカプセル化する新しいKeyGenerator
オブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。登録済みプロバイダのリストは、
Security.getProviders()
メソッド経由で取得できます。- パラメータ:
algorithm
- 要求されたキー・アルゴリズムの標準名。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKeyGeneratorの項を参照してください。provider
- プロバイダ名。- 戻り値:
- 新しい
KeyGenerator
オブジェクト - 例外:
IllegalArgumentException
-provider
がnull
または空の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのKeyGeneratorSpi
実装が、指定されたプロバイダから利用可能でない場合NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
-
getInstance
public static final KeyGenerator getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 指定されたアルゴリズムの秘密キーを生成するKeyGenerator
オブジェクトを返します。指定されたプロバイダ・オブジェクトから
KeyGeneratorSpi
実装をカプセル化する新しいKeyGenerator
オブジェクトが返されます。 指定したプロバイダ・オブジェクトは、プロバイダ・リストに登録する必要はありません。- パラメータ:
algorithm
- 要求されたキー・アルゴリズムの標準名。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKeyGeneratorの項を参照してください。provider
- プロバイダ- 戻り値:
- 新しい
KeyGenerator
オブジェクト - 例外:
IllegalArgumentException
-provider
がnull
の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのKeyGeneratorSpi
実装が、指定されたProvider
オブジェクトから使用できない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
-
getProvider
public final Provider getProvider()このKeyGenerator
オブジェクトのプロバイダを返します。- 戻り値:
- この
KeyGenerator
オブジェクトのプロバイダ
-
init
-
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
-