|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.security
类 KeyFactory
java.lang.Object java.security.KeyFactory
-
public class KeyFactory
- extends Object
密钥工厂是用来将 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);
- 从以下版本开始:
- 1.2
- 另请参见:
-
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 |
构造方法详细信息 |
---|
KeyFactory
protected KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)
-
创建一个 KeyFactory 对象。
- 参数:
-
keyFacSpi
- 代理 -
provider
- 提供程序 -
algorithm
- 与此 KeyFactory 关联的算法名称
方法详细信息 |
---|
getInstance
public static KeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException
- 生成实现指定算法的 KeyFactory 对象。如果默认的 provider 包提供所请求算法的实现,则返回包含该实现的 KeyFactory 的实例。如果默认包中不存在该算法,则搜索其他包。
-
- 参数:
-
algorithm
- 所请求密钥算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。 - 返回:
- 指定算法的 KeyFactory 对象。
- 抛出:
-
NoSuchAlgorithmException
- 如果默认的提供程序包中请求的算法不可用,或者搜索到的其他提供程序包都不可用。
getInstance
public static KeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
- 为指定提供程序中的指定算法生成 KeyFactory 对象。
-
- 参数:
-
algorithm
- 所请求密钥算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference 》中的附录 A。 -
provider
- 提供程序的名称。 - 返回:
- 指定算法的 KeyFactory 对象。
- 抛出:
-
NoSuchAlgorithmException
- 如果指定提供程序中的算法不可用。 -
NoSuchProviderException
- 如果尚未配置提供程序。 -
IllegalArgumentException
- 如果提供程序的名称为 null 或空。 - 另请参见:
-
Provider
getInstance
public static KeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
-
为指定提供程序中的指定算法生成 KeyFactory 对象。注:
provider
不一定都需要注册。 -
- 参数:
-
algorithm
- 所请求密钥算法的名称。有关标准算法名称的信息,请参阅《Java Cryptography Architecture API Specification & Reference》中的附录 A。 -
provider
- 提供程序。 - 返回:
- 指定算法的 KeyFactory 对象。
- 抛出:
-
NoSuchAlgorithmException
- 如果指定提供程序中的算法不可用。 -
IllegalArgumentException
- 如果provider
为 null。 - 从以下版本开始:
- 1.4
- 另请参见:
-
Provider
getProvider
public final Provider getProvider()
- 返回此密钥工厂对象的提供程序。
-
- 返回:
- 此密钥工厂对象的提供程序。
getAlgorithm
public final String getAlgorithm()
- 获取与此 KeyFactory 相关联的算法的名称。
-
- 返回:
- 与此 KeyFactory 相关联的算法的名称。
generatePublic
public final PublicKey generatePublic(KeySpec keySpec) throws InvalidKeySpecException
- 根据所提供的密钥规范(密钥材料)生成公钥对象。
-
- 参数:
-
keySpec
- 公钥的规范(密钥材料)。 - 返回:
- 公钥。
- 抛出:
-
InvalidKeySpecException
- 如果给定的密钥规范不适合此密钥工厂来生成公钥。
generatePrivate
public final PrivateKey generatePrivate(KeySpec keySpec) throws InvalidKeySpecException
- 根据所提供的密钥规范(密钥材料)生成私钥对象。
-
- 参数:
-
keySpec
- 私钥的规范(密钥材料)。 - 返回:
- 私钥。
- 抛出:
-
InvalidKeySpecException
- 如果给定的密钥规范不适合此密钥工厂来生成私钥。