У меня есть код, который читает 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 ' +...
"
Я использовал console.log (encryptedData, privatekey, buffer) в обоих окнах и системе Ubuntu, и они идентичны. Также в privatekey я не использовал пароль.
У кого-нибудь есть идея, почему в Ubuntu я получаю такую ошибку, а в Windows она работает нормально? Может ли это быть связано с форматом privatekey, который на самом деле является форматом .pam, и из-за пробелов linux не может его обработать?
EDIT:
Мой закрытый ключ имеет этот формат
-----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: ''
}
});
Когда я проверял больше в интернете, я видел пример на введите описание ссылки здесь
что заголовок закрытого ключа «----- НАЧАТЬ RSA PRIVATE KEY -----», и на самом деле я мог запустить этот код в Ubuntu, и никакой ошибки не происходит. Таким образом, похоже, что проблема связана с заголовком, который изменяется из-за типа 'pkcs8' внутри privateKeyEncoding.
Также я заметил, что моя версия узла на Windows 10.15.3 и на Ubuntu 12.4
Может ли это быть также связано с изменением версии узла?