クラスKeyGenerator
キー・ジェネレータは、このクラスの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)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オブジェクトを返します。このメソッドは、最も優先されるプロバイダから始まる登録済セキュリティ・プロバイダのリストを横断します。 指定されたアルゴリズムをサポートする最初のプロバイダから
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オブジェクトを返します。指定されたプロバイダ・オブジェクトから
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
-