- 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
- アルゴリズムに依存しない初期化
-
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
KeyGenerator(KeyGeneratorSpi keyGenSpi, Provider provider, String algorithm)
KeyGeneratorオブジェクトを生成します。
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 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()
秘密鍵を生成します。- 戻り値:
- 新しい鍵
-
-