- 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)
- HmacSHA1
- HmacSHA256
 - 導入されたバージョン:
- 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)指定されたパラメータ・セットとユーザーが提供する乱数発生の元を使って、このキー・ジェネレータを初期化します。
 
- 
- 
- 
コンストラクタの詳細- 
KeyGeneratorprotected KeyGenerator(KeyGeneratorSpi keyGenSpi, Provider provider, String algorithm) KeyGeneratorオブジェクトを生成します。- パラメータ:
- keyGenSpi- 委譲先
- provider- プロバイダ
- algorithm- アルゴリズム
 
 
- 
 - 
メソッドの詳細- 
getAlgorithmpublic final String getAlgorithm() このKeyGeneratorオブジェクトのアルゴリズム名を返します。これは、この KeyGeneratorオブジェクトを作成したgetInstance呼出しのいずれかに指定された名前と同じです。- 戻り値:
- このKeyGeneratorオブジェクトのアルゴリズム名。
 
 - 
getInstancepublic 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
 
 - 
getInstancepublic 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
 
 - 
getInstancepublic 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
 
 - 
getProviderpublic final Provider getProvider() このKeyGeneratorオブジェクトのプロバイダを返します。- 戻り値:
- このKeyGeneratorオブジェクトのプロバイダ
 
 - 
initpublic final void init(SecureRandom random) このキー・ジェネレータを初期化します。- パラメータ:
- random- このジェネレータの乱数発生の元
 
 - 
initpublic final void init(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException このキー・ジェネレータを、指定されたパラメータ・セットを使って初期化します。このキー・ジェネレータが乱数バイトを必要とする場合は、インストールされているプロバイダのうち、もっとも優先順位の高いプロバイダの SecureRandomの実装を乱数発生の元として使用して乱数バイトを取得します。 (SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。)- パラメータ:
- params- キー・ジェネレータのパラメータ
- 例外:
- InvalidAlgorithmParameterException- 指定されたパラメータがこのキー・ジェネレータに不適切な場合
 
 - 
initpublic final void init(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException 指定されたパラメータ・セットとユーザーが提供する乱数発生の元を使って、このキー・ジェネレータを初期化します。- パラメータ:
- params- キー・ジェネレータのパラメータ
- random- このキー・ジェネレータの乱数発生の元
- 例外:
- InvalidAlgorithmParameterException-- paramsがこのキー・ジェネレータに不適切な場合
 
 - 
initpublic final void init(int keysize) このキー・ジェネレータを特定のキー・サイズに応じて初期化します。このキー・ジェネレータが乱数バイトを必要とする場合は、インストールされているプロバイダのうち、もっとも優先順位の高いプロバイダの SecureRandomの実装を乱数発生の元として使用して乱数バイトを取得します。 (SecureRandomを提供するプロバイダが1つもインストールされていない場合は、システムが提供する乱数発生の元が使用されます。)- パラメータ:
- keysize- キー・サイズ。 ビット長で指定されたアルゴリズム固有のメトリックス
- 例外:
- InvalidParameterException- キー・サイズが間違っているか、サポートされていない場合。
 
 - 
initpublic final void init(int keysize, SecureRandom random)ユーザーが提供する乱数発生の元を使って、このキー・ジェネレータを特定のキー・サイズに応じて初期化します。- パラメータ:
- keysize- キー・サイズ。 ビット長で指定されたアルゴリズム固有のメトリックス
- random- このキー・ジェネレータの乱数発生の元
- 例外:
- InvalidParameterException- キー・サイズが間違っているか、サポートされていない場合。
 
 - 
generateKeypublic final SecretKey generateKey() 秘密キーを生成します。- 戻り値:
- 新しいキー
 
 
- 
 
-