|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.security.KeyFactory
public class KeyFactory
密钥工厂是用来将 keys(Key
类型的不透明加密密钥)转换成 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);
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 对象。 |
|
|
getKeySpec(Key key,
Class<T> keySpec)
返回给定密钥对象的规范(密钥材料)。 |
|
Provider |
getProvider()
返回此密钥工厂对象的提供程序。 |
|
Key |
translateKey(Key key)
将其提供程序可能是未知的或可能不受信任的密钥对象转换成此密钥工厂的相应密钥对象。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
protected KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)
keyFacSpi
- 代理provider
- 提供程序algorithm
- 与此 KeyFactory 关联的算法名称方法详细信息 |
---|
public static KeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException
algorithm
- 所请求密钥算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。
NoSuchAlgorithmException
- 如果默认的提供程序包中请求的算法不可用,或者搜索到的其他提供程序包都不可用。public static KeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
algorithm
- 所请求密钥算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference 》中的附录 A。provider
- 提供程序的名称。
NoSuchAlgorithmException
- 如果指定提供程序中的算法不可用。
NoSuchProviderException
- 如果尚未配置提供程序。
IllegalArgumentException
- 如果提供程序的名称为 null 或空。Provider
public static KeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
provider
不一定都需要注册。
algorithm
- 所请求密钥算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。provider
- 提供程序。
NoSuchAlgorithmException
- 如果指定提供程序中的算法不可用。
IllegalArgumentException
- 如果 provider
为 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
- 如果给定密钥不能被此密钥工厂处理。
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。