キー・ファクトリは、Key
型の不透明な暗号キーであるキーと、基本のキー・マテリアルの透明な表現であるキー仕様との間の変換を行うために使用します。 秘密キー・ファクトリの操作は、秘密(対称)キーだけに行います。
キー・ファクトリは双方向性です。つまり、指定したキー仕様(キー・データ)から不透明なキー・オブジェクトを構築することも、適切な形式でキー・オブジェクトの基本のキー・データを取り出すこともできます。
アプリケーション開発者は、プロバイダのドキュメントを参照して、generateSecret
およびgetKeySpec
メソッドでサポートされているキー仕様を確認する必要があります。 たとえば、"SunJCE"プロバイダによって提供されるDESede (トリプルDES)の秘密キー・ファクトリでは、DESedeKeySpec
がトリプルDESキーの透過的表現としてサポートされます。
Javaプラットフォームの実装は、すべて次の標準のSecretKeyFactory
アルゴリズムをサポートする必要があります。
DESede
- 導入されたバージョン:
- 1.4
- 関連項目:
-
コンストラクタのサマリー
修飾子コンストラクタ説明protected
SecretKeyFactory
(SecretKeyFactorySpi keyFacSpi, Provider provider, String algorithm) SecretKeyFactoryオブジェクトを生成します。 -
メソッドのサマリー
修飾子と型メソッド説明final SecretKey
generateSecret
(KeySpec keySpec) 指定されたキー仕様(キー・データ)からSecretKey
オブジェクトを生成します。final String
このSecretKeyFactory
オブジェクトのアルゴリズム名を返します。static final SecretKeyFactory
getInstance
(String algorithm) 指定されたアルゴリズムの秘密キーを変換するSecretKeyFactory
オブジェクトを返します。static final SecretKeyFactory
getInstance
(String algorithm, String provider) 指定されたアルゴリズムの秘密キーを変換するSecretKeyFactory
オブジェクトを返します。static final SecretKeyFactory
getInstance
(String algorithm, Provider provider) 指定されたアルゴリズムの秘密キーを変換するSecretKeyFactory
オブジェクトを返します。final KeySpec
getKeySpec
(SecretKey key, Class<?> keySpec) 指定されたキー・オブジェクトの仕様(キー・データ)を要求された形式で返します。final Provider
このSecretKeyFactory
オブジェクトのプロバイダを返します。final SecretKey
translateKey
(SecretKey key) プロバイダが未知であるか、信頼できない可能性があるキー・オブジェクトを、この秘密キー・ファクトリの対応するキー・オブジェクトに変換します。
-
コンストラクタの詳細
-
SecretKeyFactory
protected SecretKeyFactory(SecretKeyFactorySpi keyFacSpi, Provider provider, String algorithm) SecretKeyFactoryオブジェクトを生成します。- パラメータ:
keyFacSpi
- 委譲先provider
- プロバイダalgorithm
- 秘密キーアルゴリズム
-
-
メソッドの詳細
-
getInstance
public static final SecretKeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException 指定されたアルゴリズムの秘密キーを変換するSecretKeyFactory
オブジェクトを返します。このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のプロバイダのSecretKeyFactorySpi実装をカプセル化する新しいSecretKeyFactoryオブジェクトが返されます。
登録済みプロバイダのリストは、
Security.getProviders()
メソッド経由で取得できます。- 実装上のノート:
- JDKリファレンス実装では、
jdk.security.provider.preferred
Security
プロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()
によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
algorithm
- 要求された秘密キーアルゴリズムの標準名。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のSecretKeyFactoryセクションを参照してください。- 戻り値:
- 新しい
SecretKeyFactory
オブジェクト - 例外:
NoSuchAlgorithmException
-Provider
が、指定されたアルゴリズムのSecretKeyFactorySpi
実装をサポートしていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
-
getInstance
public static final SecretKeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 指定されたアルゴリズムの秘密キーを変換するSecretKeyFactory
オブジェクトを返します。指定されたプロバイダからのSecretKeyFactorySpi実装をカプセル化する新しいSecretKeyFactoryオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。
登録済みプロバイダのリストは、
Security.getProviders()
メソッド経由で取得できます。- パラメータ:
algorithm
- 要求された秘密キーアルゴリズムの標準名。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のSecretKeyFactoryセクションを参照してください。provider
- プロバイダ名。- 戻り値:
- 新しい
SecretKeyFactory
オブジェクト - 例外:
IllegalArgumentException
-provider
がnull
または空の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのSecretKeyFactorySpi
実装が、指定されたプロバイダから利用可能でない場合NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
-
getInstance
public static final SecretKeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 指定されたアルゴリズムの秘密キーを変換するSecretKeyFactory
オブジェクトを返します。指定されたProviderオブジェクトからのSecretKeyFactorySpi実装をカプセル化する新しいSecretKeyFactoryオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
- パラメータ:
algorithm
- 要求された秘密キーアルゴリズムの標準名。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のSecretKeyFactoryセクションを参照してください。provider
- プロバイダ- 戻り値:
- 新しい
SecretKeyFactory
オブジェクト - 例外:
IllegalArgumentException
-provider
がnull
の場合NoSuchAlgorithmException
- 指定されたアルゴリズムのSecretKeyFactorySpi
実装が、指定されたProvider
オブジェクトから使用できない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
-
getProvider
public final Provider getProvider()このSecretKeyFactory
オブジェクトのプロバイダを返します。- 戻り値:
- この
SecretKeyFactory
オブジェクトのプロバイダ
-
getAlgorithm
public final String getAlgorithm()このSecretKeyFactory
オブジェクトのアルゴリズム名を返します。これは、この
SecretKeyFactory
オブジェクトを作成したgetInstance
呼出しのいずれかに指定された名前と同じです。- 戻り値:
- この
SecretKeyFactory
オブジェクトのアルゴリズム名。
-
generateSecret
public final SecretKey generateSecret(KeySpec keySpec) throws InvalidKeySpecException 指定されたキー仕様(キー・データ)からSecretKey
オブジェクトを生成します。- パラメータ:
keySpec
- 秘密キーの仕様(キー・データ)- 戻り値:
- 秘密キー
- 例外:
InvalidKeySpecException
- 指定されたキー仕様がこの秘密キー・ファクトリによる秘密キーの生成に不適切な場合。
-
getKeySpec
public final KeySpec getKeySpec(SecretKey key, Class<?> keySpec) throws InvalidKeySpecException 指定されたキー・オブジェクトの仕様(キー・データ)を要求された形式で返します。- パラメータ:
key
- キーkeySpec
- キー・データが返される、要求された形式- 戻り値:
- 要求された形式での基本となるキー仕様(キー・データ)
- 例外:
InvalidKeySpecException
- 要求されたキー仕様が指定されたキーに不適切(key
とkeySpec
に関連するアルゴリズムが一致しない、あるいはkey
は暗号化ハードウェア・デバイスのキーを参照するが、keySpec
はソフトウェア・ベースのキーの仕様であるなど)な場合、あるいは指定されたキーを扱えない場合(たとえば、指定されたキーのアルゴリズムまたは形式がこの秘密キー・ファクトリでサポートされていない)。
-
translateKey
public final SecretKey translateKey(SecretKey key) throws InvalidKeyException プロバイダが未知であるか、信頼できない可能性があるキー・オブジェクトを、この秘密キー・ファクトリの対応するキー・オブジェクトに変換します。- パラメータ:
key
- プロバイダが未知であるか、信頼できないキー- 戻り値:
- 変換したキー
- 例外:
InvalidKeyException
- 指定されたキーをこの秘密キー・ファクトリで処理できない場合。
-