public class KeyFactory extends Object
Key
)为主要规格(基础关键材料的透明表示),反之亦然。
关键工厂是双向的。也就是说,他们允许你从一个给定的关键规范(关键材料)建立一个不透明的关键对象,或检索一个合适的格式的一个关键对象的基本关键材料。
多个兼容的密钥规范可能存在于同一个密钥中。例如,一个用公开密钥可以使用DSAPublicKeySpec
或X509EncodedKeySpec
指定。关键的工厂可以把关键指标之间的兼容。
下面是一个例子,如何使用为关键工厂实例化一个DSA公钥编码。假设爱丽丝已经收到了鲍伯的签名。鲍伯还把她自己的公共密钥(编码格式)来验证自己的签名。爱丽丝然后执行以下动作:
x509encodedkeyspec bobpubkeyspec =新x509encodedkeyspec(bobencodedpubkey);keyfactory keyfactory = keyfactory getInstance(“DSA”);公钥bobpubkey = keyfactory generatepublic(bobpubkeyspec);签名Sig为签名。getInstance(“DSA”);SIG initverify(bobpubkey);SIG的更新(数据);签名验证(签名);
java平台的每种实现都要求支持以下标准KeyFactory
算法:
DiffieHellman
DSA
RSA
Key
,
PublicKey
,
PrivateKey
,
KeySpec
,
DSAPublicKeySpec
,
X509EncodedKeySpec
Modifier | Constructor and Description |
---|---|
protected |
KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)
创建一个keyfactory对象。
|
Modifier and Type | Method and Description |
---|---|
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, 类<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
该方法通过注册安全提供商列表,从最开始的首选供应商。一个新的keyfactory对象封装keyfactoryspi实施支持指定算法的第一供应商返回。
注意,注册商的列表可以通过Security.getProviders()
检索方法。
algorithm
-请求的密钥算法的名称。看到有关标准算法名称信息在
Java Cryptography Architecture Standard Algorithm Name Documentation的keyfactory节。
NoSuchAlgorithmException
-如果没有提供程序支持一个指定的算法keyfactoryspi实施。
Provider
public static KeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
一个新的keyfactory对象封装keyfactoryspi实现从指定的提供程序返回。指定的提供程序必须在安全提供程序列表中注册。
注意,注册商的列表可以通过Security.getProviders()
检索方法。
algorithm
-请求的密钥算法的名称。看到有关标准算法名称信息在
Java Cryptography Architecture Standard Algorithm Name Documentation的keyfactory节。
provider
-提供者的名称。
NoSuchAlgorithmException
-如果一个指定的算法keyfactoryspi执行不可从指定的供应商。
NoSuchProviderException
-如果指定的供应商不在安全提供商注册名单。
IllegalArgumentException
如果提供者名称为空或空。
Provider
public static KeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
一个新的keyfactory对象封装keyfactoryspi实现从指定的提供程序对象返回。请注意,指定的提供程序对象不必在提供者列表中注册。
algorithm
-请求的密钥算法的名称。看到有关标准算法名称信息在
Java Cryptography Architecture Standard Algorithm Name Documentation的keyfactory节。
provider
-供应商。
NoSuchAlgorithmException
-如果一个指定的算法keyfactoryspi执行不可从指定的提供程序对象。
IllegalArgumentException
-如果指定的提供程序是无效的。
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, 类<T> keySpec) throws InvalidKeySpecException
keySpec
识别其关键材料应返回的规范类。它可以,例如,被
DSAPublicKeySpec.class
,表明主要材料应在
DSAPublicKeySpec
类的实例返回。
T
-要返回的关键规范的类型
key
的关键。
keySpec
-其中主要材料应返回的规范类。
InvalidKeySpecException
如果请求的主要指标是不适合给定的键,或给定的键不能被处理(例如,给定的键具有无法识别的算法或格式)。
public final Key translateKey(Key key) throws InvalidKeyException
key
-关键的供应商是未知或不可信。
InvalidKeyException
如果给定键不能用这个关键的工厂加工。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.