キー・ジェネレータは、このクラスの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)HmacSHA1HmacSHA256
- 導入されたバージョン:
- 1.4
- 関連項目:
-
コンストラクタのサマリー
コンストラクタ修飾子コンストラクタ説明protectedKeyGenerator(KeyGeneratorSpi keyGenSpi, Provider provider, String algorithm) KeyGeneratorオブジェクトを生成します。 -
メソッドのサマリー
修飾子と型メソッド説明final SecretKey秘密キーを生成します。final StringこのKeyGeneratorオブジェクトのアルゴリズム名を返します。static final KeyGeneratorgetInstance(String algorithm) 指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。static final KeyGeneratorgetInstance(String algorithm, String provider) 指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。static final KeyGeneratorgetInstance(String algorithm, Provider provider) 指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。final ProviderこのKeyGeneratorオブジェクトのプロバイダを返します。final voidinit(int keysize) このキー・ジェネレータを特定のキー・サイズに応じて初期化します。final voidinit(int keysize, SecureRandom random) ユーザーが提供する乱数発生の元を使って、このキー・ジェネレータを特定のキー・サイズに応じて初期化します。final voidinit(SecureRandom random) このキー・ジェネレータを初期化します。final voidinit(AlgorithmParameterSpec params) このキー・ジェネレータを、指定されたパラメータ・セットを使って初期化します。final voidinit(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オブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のプロバイダのKeyGeneratorSpi実装をカプセル化する新しいKeyGeneratorオブジェクトが返されます。
登録済みプロバイダのリストは、
Security.getProviders()メソッド経由で取得できます。- 実装上のノート:
- JDKリファレンス実装では、
jdk.security.provider.preferredSecurityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、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オブジェクトを返します。指定されたProviderオブジェクトからのKeyGeneratorSpiの実装をカプセル化する新しいKeyGeneratorオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
- パラメータ:
algorithm- 要求されたキー・アルゴリズムの標準名。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のKeyGeneratorセクションを参照してください。provider- プロバイダ- 戻り値:
- 新しい
KeyGeneratorオブジェクト - 例外:
IllegalArgumentException-providerがnullの場合NoSuchAlgorithmException- 指定されたアルゴリズムのKeyGeneratorSpi実装が、指定されたProviderオブジェクトから使用できない場合NullPointerException-algorithmがnullである場合- 関連項目:
-
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()秘密キーを生成します。- 戻り値:
- 新しいキー
-