密钥加载的使用 PKCS8EncodedKeySpec 使用说明

来源:互联网 发布:手机端淘宝详情页高度 编辑:程序博客网 时间:2024/06/16 17:51

PKCS8EncodedKeySpec类继承EncodedKeySpec类,以编码格式来表示私钥。
PKCS8EncodedKeySpec类使用PKCS#8标准作为密钥规范管理的编码格式,该类的命名由此得来。
// 用编码格式来表示私钥
public class PKCS8EncodedKeySpec
extends EncodedKeySpec 

(1)方法详述

可通过如下方法实例化对象:
// 根据给定的编码密钥创建一个新的 PKCS8EncodedKeySpec
public PKCS8EncodedKeySpec(byte[] encodedKey)  

以下两种方法均依照PKCS #8标准:
// 返回按照 PKCS#8标准编码的密钥字节
public byte[] getEncoded()
// 返回与此密钥规范相关联的编码格式的名称。将得到字符串"PKCS#8"
public String getFormat()

(2)实现示例

下面根据前面介绍的实现示例来展示如何获得私钥对象。

通过获得的密钥对,我们来获得私钥密钥编码字节数组:
// 获得私钥密钥字节数组
byte[] privateKeyBytes = keys.getPrivate().getEncoded();

最后,我们将获得私钥对象:
// 实例化PKCS8EncodedKeySpec对象
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
// 实例化KeyFactory对象,并指定DSA算法
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
// 获得PrivateKey对象
PrivateKey privateKey = keyFactory.generatePrivate (keySpec);

X509EncodedKeySpec和PKCS8EncodedKeySpec两个类在加密解密环节中经常会用到。密钥很可能会以二进制方式存储于文件中,由程序来读取。这时候,就需要通过这两个类将文件中的字节数组读出转换为密钥对象。

0 0
原创粉丝点击