openssl - 为什么在将 pkcs8 密钥从 pem 转换为 der 时需要密码
问题描述
因为 pem 只是 der 的 base64 编码。为什么在从一种编码转换为另一种编码时需要密码?如果我用java中的字节数组中的代码读取证书(删除了封装边界)并将该字节数组写入文件,那不是der文件吗?我试过了,但没有用。
我正在使用带有 aes256 的 pkcs8 密码保护密钥
解决方案
转换不起作用的答案可能是因为 DER 编码文件包含内部和外部 PKCS#8 结构。内部结构定义了被包装的密钥以及被包装的密钥本身;这是被加密的部分。
外部结构定义了用于派生包装密钥和包装算法的协议。如果您有这种 PEM 格式的结构,则很可能 PEM 标题行定义了算法,并且 base 64 编码结构仅包含内部 PKCS#8 结构上的密文。
不过,只要不更改加密格式和盐,应该可以保持内部结构完好无损。如果要求输入密码,可能有两个原因:
- 仅仅因为它更容易,因为包装和展开的功能已经完整存在;
- 至于更改盐或IV,因此相同的包装密钥仍然会生成不同的密文(不可能看到相同的密钥被包装了)。
推荐阅读
- ios - 带有右栏按钮问题的大型导航栏
- javascript - 默认情况下启用自动修复。使用单字符串形式
- android - OnePlus Expresso 测试运行问题 (Android Studio 3.6.2)
- emacs - 启动 Emacs 时如何防止打开特定的缓冲区
- go - Golang 解密数组 Byte Xtea ECB 算法
- python - 如何查找 Pandas Column 中存在的任何共同点
- birt - birt报告中如何传递参数08-2019
- azure-functions-core-tools - 我们如何发出 POST 请求并在正文中传递内容?
- kotlin - Kotlin 中的生命周期 kotlinx.coroutines.coroutineScope 是什么?
- reactjs - 除非我强制调整其大小,否则 React-grid-layout 无法使用新元素正确更新