- java.lang.Object
-
- javax.crypto.KeyGenerator
-
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)DES(56)DESede(168)HmacSHA1HmacSHA256
- 導入されたバージョン:
- 1.4
- 関連項目:
SecretKey
- アルゴリズムに依存しない初期化
-
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protectedKeyGenerator(KeyGeneratorSpi keyGenSpi, Provider provider, String algorithm)KeyGeneratorオブジェクトを生成します。
-
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 SecretKeygenerateKey()秘密キーを生成します。StringgetAlgorithm()このKeyGeneratorオブジェクトのアルゴリズム名を返します。static KeyGeneratorgetInstance(String algorithm)指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。static KeyGeneratorgetInstance(String algorithm, String provider)指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。static KeyGeneratorgetInstance(String algorithm, Provider provider)指定されたアルゴリズムの秘密キーを生成するKeyGeneratorオブジェクトを返します。ProvidergetProvider()このKeyGeneratorオブジェクトのプロバイダを返します。voidinit(int keysize)このキー・ジェネレータを特定のキー・サイズに応じて初期化します。voidinit(int keysize, SecureRandom random)ユーザーが提供する乱数発生の元を使って、このキー・ジェネレータを特定のキー・サイズに応じて初期化します。voidinit(SecureRandom random)このキー・ジェネレータを初期化します。voidinit(AlgorithmParameterSpec params)このキー・ジェネレータを、指定されたパラメータ・セットを使って初期化します。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である場合- 関連項目:
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()
秘密キーを生成します。- 戻り値:
- 新しいキー
-
-