首页 > 解决方案 > 为什么在将 pkcs8 密钥从 pem 转换为 der 时需要密码

问题描述

因为 pem 只是 der 的 base64 编码。为什么在从一种编码转换为另一种编码时需要密码?如果我用java中的字节数组中的代码读取证书(删除了封装边界)并将该字节数组写入文件,那不是der文件吗?我试过了,但没有用。

我正在使用带有 aes256 的 pkcs8 密码保护密钥

标签: opensslcryptographypempkcs#8asn1

解决方案


转换不起作用的答案可能是因为 DER 编码文件包含内部和外部 PKCS#8 结构。内部结构定义了被包装的密钥以及被包装的密钥本身;这是被加密的部分。

外部结构定义了用于派生包装密钥和包装算法的协议。如果您有这种 PEM 格式的结构,则很可能 PEM 标题行定义了算法,并且 base 64 编码结构仅包含内部 PKCS#8 结构上的密文。

不过,只要不更改加密格式和盐,应该可以保持内部结构完好无损。如果要求输入密码,可能有两个原因:

  1. 仅仅因为它更容易,因为包装和展开的功能已经完整存在;
  2. 至于更改盐或IV,因此相同的包装密钥仍然会生成不同的密文(不可能看到相同的密钥被包装了)。

推荐阅读