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
- 導入されたバージョン:
- 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)
指定されたパラメータ・セットとユーザーが提供する乱数発生の元を使って、このキー・ジェネレータを初期化します。
-
コンストラクタの詳細
-
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
-algorithm
がnull
である場合- 関連項目:
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
-provider
がnull
または空の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのKeyGeneratorSpi
実装が、指定されたプロバイダから利用可能でない場合NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
Provider
-
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
である場合- 関連項目:
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()秘密キーを生成します。- 戻り値:
- 新しいキー
-