Openssl 为什么在将pkcs8密钥从pem转换为der时需要密码

Openssl 为什么在将pkcs8密钥从pem转换为der时需要密码,openssl,cryptography,pem,pkcs#8,asn1,Openssl,Cryptography,Pem,Pkcs#8,Asn1,因为pem只是der的base64编码。为什么在从一种编码转换到另一种编码时需要密码? 如果我用java中的字节数组(封装边界被移除)读取带有代码的证书,并将该字节数组写入一个文件,那不是一个der文件吗? 我试过了,但没用 我使用的是带有aes256密码保护的pkcs8密钥。转换不起作用的原因可能是因为DER编码的文件既包含内部PKCS#8结构,也包含外部PKCS#8结构。内部结构定义了包裹的密钥和包裹的密钥本身;这是被加密的部分 外部结构定义了用于导出包装密钥和包装算法的协议。如果此结构为P

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


我使用的是带有aes256密码保护的pkcs8密钥。转换不起作用的原因可能是因为DER编码的文件既包含内部PKCS#8结构,也包含外部PKCS#8结构。内部结构定义了包裹的密钥和包裹的密钥本身;这是被加密的部分

外部结构定义了用于导出包装密钥和包装算法的协议。如果此结构为PEM格式,则可能是PEM头行定义了算法,并且base 64编码结构仅包含内部PKCS#8结构上的密文

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

  • 简单地说,因为包装和展开的功能已经全部存在,所以更容易
  • 至于更改salt或IV,以便相同的封装密钥仍然会生成不同的密文(不可能看到相同的密钥被封装)

  • 转换不起作用的原因可能是因为DER编码的文件既包含内部PKCS#8结构,也包含外部PKCS#8结构。内部结构定义了包裹的密钥和包裹的密钥本身;这是被加密的部分

    外部结构定义了用于导出包装密钥和包装算法的协议。如果此结构为PEM格式,则可能是PEM头行定义了算法,并且base 64编码结构仅包含内部PKCS#8结构上的密文

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

  • 简单地说,因为包装和展开的功能已经全部存在,所以更容易
  • 至于更改salt或IV,以便相同的封装密钥仍然会生成不同的密文(不可能看到相同的密钥被封装)

  • 这有点基于有根据的猜测;如果你想得到更精确的答案,你必须显示你的代码并测试输入/输出。至于标题行,因为密钥是pkcs#8,所以它只有,开始加密私钥,结束加密私钥。与pkcs#1加密密钥不同,pkcs#1加密密钥包含附加信息。与Proc Type:4一样,加密的DEK信息:AES-256-CBC、C4A3EEC3D7782FBA34A43F2397358A621和2也有一定的说服力,但仍然无法解释为什么它在java程序中不起作用。至于代码,我不能在这里分享,但它涉及到读取pem文件,删除字节[]中的头,并使用FIleOutputStream写入相同的字节[]。Java本身不处理密码保护的PKCS#8结构。但是,要转换,您应该能够对内容进行Base64解码并将其写入文件。由于你不愿意分享任何东西(顺便说一句,这通常是结束这个问题的原因),我不能也不会进一步帮助你。祝你好运。这有点基于有根据的猜测;如果你想得到更精确的答案,你必须显示你的代码并测试输入/输出。至于标题行,因为密钥是pkcs#8,所以它只有,开始加密私钥,结束加密私钥。与pkcs#1加密密钥不同,pkcs#1加密密钥包含附加信息。与Proc Type:4一样,加密的DEK信息:AES-256-CBC、C4A3EEC3D7782FBA34A43F2397358A621和2也有一定的说服力,但仍然无法解释为什么它在java程序中不起作用。至于代码,我不能在这里分享,但它涉及到读取pem文件,删除字节[]中的头,并使用FIleOutputStream写入相同的字节[]。Java本身不处理密码保护的PKCS#8结构。但是,要转换,您应该能够对内容进行Base64解码并将其写入文件。由于你不愿意分享任何东西(顺便说一句,这通常是结束这个问题的原因),我不能也不会进一步帮助你。祝你好运