public class KeyFactory extends Object
Key
型の不透明な暗号鍵である鍵と、基本の鍵データの透明な表現である鍵仕様との間の変換を行うために使用します。
鍵ファクトリは、双方向性があります。つまり、指定した鍵仕様 (鍵データ) から不透明な鍵オブジェクトを構築することも、適切な形式で鍵オブジェクトの基本の鍵データを取り出すこともできます。
同一の鍵に対して、複数の互換性のある鍵仕様が存在することがあります。たとえば DSA 公開鍵は、DSAPublicKeySpec
または X509EncodedKeySpec
を使って指定できます。鍵ファクトリは、互換性のある鍵仕様間の変換に使用できます。
次に、鍵ファクトリを使って、DSA 公開鍵を符号化した状態からインスタンスを生成する方法の例を示します。Alice が Bob からデジタル署名を受け取ったとします。Bob は、彼の署名を検証するための符号化形式の公開鍵も送りました。Alice は、これらを次のように処理します。
X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(bobEncodedPubKey); KeyFactory keyFactory = KeyFactory.getInstance("DSA"); PublicKey bobPubKey = keyFactory.generatePublic(bobPubKeySpec); Signature sig = Signature.getInstance("DSA"); sig.initVerify(bobPubKey); sig.update(data); sig.verify(signature);
Java プラットフォームの実装は、すべて次の標準の KeyFactory
アルゴリズムをサポートする必要があります。
Key
, PublicKey
, PrivateKey
, KeySpec
, DSAPublicKeySpec
, X509EncodedKeySpec
修飾子 | コンストラクタと説明 |
---|---|
protected |
KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)
KeyFactory オブジェクトを作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
PrivateKey |
generatePrivate(KeySpec keySpec)
指定された鍵仕様 (鍵データ) から非公開鍵オブジェクトを生成します。
|
PublicKey |
generatePublic(KeySpec keySpec)
指定された鍵仕様 (鍵データ) から公開鍵オブジェクトを生成します。
|
String |
getAlgorithm()
この KeyFactory に関連したアルゴリズムの名前を取得します。
|
static KeyFactory |
getInstance(String algorithm)
指定のアルゴリズムの公開鍵または非公開鍵を変換する KeyFactory オブジェクトを返します。
|
static KeyFactory |
getInstance(String algorithm, Provider provider)
指定のアルゴリズムの公開鍵または非公開鍵を変換する KeyFactory オブジェクトを返します。
|
static KeyFactory |
getInstance(String algorithm, String provider)
指定のアルゴリズムの公開鍵または非公開鍵を変換する KeyFactory オブジェクトを返します。
|
<T extends KeySpec> |
getKeySpec(Key key, Class<T> keySpec)
指定された鍵オブジェクトの仕様 (鍵データ) を返します。
|
Provider |
getProvider()
この鍵ファクトリオブジェクトのプロバイダを返します。
|
Key |
translateKey(Key key)
プロバイダが未知であるか、信頼できない可能性がある鍵オブジェクトを、この鍵ファクトリの対応する鍵オブジェクトに変換します。
|
protected KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)
keyFacSpi
- 委譲先provider
- プロバイダalgorithm
- この KeyFactory に関連付けるアルゴリズムの名前public static KeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException
このメソッドは、最優先の Provider から順に、登録済みのセキュリティー Provider のリストをトラバースします。指定されたアルゴリズムをサポートする最初の Provider の KeyFactorySpi 実装をカプセル化する新しい KeyFactory オブジェクトが返されます。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
algorithm
- 要求される鍵アルゴリズムの名前。アルゴリズムの標準名については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの KeyFactory のセクションを参照。NoSuchAlgorithmException
- 指定されたアルゴリズムの KeyFactorySpi 実装をサポートする Provider が存在しない場合。Provider
public static KeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
指定されたプロバイダの KeyFactorySpi 実装をカプセル化する新しい KeyFactory オブジェクトが返されます。指定したプロバイダは、セキュリティープロバイダリストに登録する必要があります。
登録済みプロバイダのリストは、Security.getProviders()
メソッド経由で取得できます。
algorithm
- 要求される鍵アルゴリズムの名前。アルゴリズムの標準名については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの KeyFactory のセクションを参照。provider
- プロバイダ名。NoSuchAlgorithmException
- 指定されたプロバイダに指定されたアルゴリズムの KeyFactorySpi 実装がない場合。NoSuchProviderException
- 指定されたプロバイダがセキュリティープロバイダリストに登録されていない場合。IllegalArgumentException
- プロバイダ名が null または空の場合。Provider
public static KeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
指定された Provider オブジェクトの KeyFactorySpi 実装をカプセル化する新しい KeyFactory オブジェクトが返されます。指定された Provider オブジェクトは、プロバイダリストに登録する必要はありません。
algorithm
- 要求される鍵アルゴリズムの名前。アルゴリズムの標準名については、Java 暗号化アーキテクチャー標準アルゴリズム名のドキュメントの KeyFactory のセクションを参照。provider
- プロバイダ。NoSuchAlgorithmException
- 指定された Provider オブジェクトに指定されたアルゴリズムの KeyFactorySpi 実装がない場合。IllegalArgumentException
- 指定されたプロバイダが null の場合。Provider
public final Provider getProvider()
public final String getAlgorithm()
public final PublicKey generatePublic(KeySpec keySpec) throws InvalidKeySpecException
keySpec
- 公開鍵の仕様 (鍵データ)。InvalidKeySpecException
- 指定された鍵仕様がこの鍵ファクトリによる公開鍵の生成に不適切な場合。public final PrivateKey generatePrivate(KeySpec keySpec) throws InvalidKeySpecException
keySpec
- 非公開鍵の仕様 (鍵データ)。InvalidKeySpecException
- 指定された鍵仕様がこの鍵ファクトリによる非公開鍵の生成に不適切な場合。public final <T extends KeySpec> T getKeySpec(Key key, Class<T> keySpec) throws InvalidKeySpecException
keySpec
は、鍵データが返される仕様クラスを識別します。たとえば、DSAPublicKeySpec.class
は、鍵のデータが DSAPublicKeySpec
クラスのインスタンスに返されるべきであることを指示します。key
- 鍵。keySpec
- 鍵データが返される仕様クラス。InvalidKeySpecException
- 要求される鍵仕様が指定された鍵に不適切な場合、または認識されないアルゴリズムや形式の鍵を指定した場合など、指定された鍵を処理できない場合。public final Key translateKey(Key key) throws InvalidKeyException
key
- プロバイダが未知であるか、信頼できない鍵。InvalidKeyException
- 指定された鍵をこの鍵ファクトリで処理できない場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.