- 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() 秘密鍵を生成します。- 戻り値:
- 新しい鍵
 
 
- 
 
-