【发布时间】:2019-06-12 05:41:02
【问题描述】:
我有一个读取 privateKey(PEM 格式)的代码和我想要解密它的加密文本。当我在 Windows 中运行代码时,一切正常,它通过
解密文本let buffer = Buffer.from(encryptedData,'base64');
crypto.privateDecrypt(privatekey, buffer);
但是,当我在 Ubuntu 中运行相同的代码时,我收到以下错误:
"'Passphrase required for encrypted key.TypeError: Passphrase ' +
'required for encrypted key at Object.privateDecrypt ' +
'(internal/crypto/cipher.js:53:12) at e1c2 ' +...
"
我在 windows 和 Ubuntu 系统中都使用了 console.log(encryptedData,privatekey,buffer),它们是相同的。同样在私钥中,我没有使用密码。 任何人都知道为什么在 Ubuntu 中我得到这样的错误,而在 Windows 中它工作正常?它是否与实际上是 .pam 格式的私钥格式有关,并且由于空格 linux 无法处理它?
编辑:
我的私钥有这种格式
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIJrTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIdq79fP1MZogCAggA
MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBDMX/L46fPKcSQkgXrwpLtqBIIJ
..
我基本上是通过
生成的crypto.generateKeyPairSync('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'spki',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
cipher: 'aes-256-cbc',
passphrase: ''
}
});
当我在互联网上查看更多信息时,我在enter link description here 看到了一个示例 私钥的标题是“-----BEGIN RSA PRIVATE KEY-----”,实际上我可以在 Ubuntu 中运行该代码并且不会发生错误。所以看起来问题与由于privateKeyEncoding中的'pkcs8'类型而改变的标题有关。 我还注意到我在 windows 上的节点版本是 10.15.3 而在 ubuntu 上是 12.4 会不会也和节点版本变化有关?
【问题讨论】:
标签: node.js windows ubuntu-16.04 cryptojs