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
アルゴリズムをサポートする必要があります。
DiffieHellman
DSA
RSA
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()
KeyFactory
に関連したアルゴリズムの名前を取得します。KeyFactory
に関連付けられたアルゴリズムの名前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
クラスのインスタンスに返されるべきであることを指示します。 T
- 返されるキー仕様の型key
- キー。keySpec
- キー・データが返される仕様クラス。InvalidKeySpecException
- 要求されるキー仕様が指定されたキーに不適切な場合、または認識されないアルゴリズムや形式のキーを指定した場合など、指定されたキーを処理できない場合。public final Key translateKey(Key key) throws InvalidKeyException
key
- プロバイダが未知であるか、信頼できないキー。InvalidKeyException
- 指定されたキーをこのキー・ファクトリで処理できない場合。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。