【发布时间】:2021-02-26 12:56:57
【问题描述】:
我使用加密包执行以下操作:
- crypto.generateKeyPairSync() 生成 publicKey 和 privateKey
- 我只创建了一次密钥,并将它们存储在 .env 文件中
- crypto.publicEncrypt() 在将数据存储到数据库之前对其进行加密
- crypto.privateDecrypt() 解密数据以在 HTML 页面上呈现 (在html页面渲染数据只是为了检查数据是否存储正确,稍后我会在登录时使用privateDecrypt来检查pw是否有效)。
在我的本地计算机上:
- 我能够加密数据并将其存储在数据库中
- 解密数据并在 HTML 上呈现
但是,如果我尝试解密 AWS EC2 实例上的数据,则会收到以下错误:error:040A1079:rsaroutines:RSA_padding_check_PKCS1_OAEP_mgf1:oaep 解码错误。
我很困惑,因为我使用的是完全相同的键、完全相同的代码和完全相同的数据库。在本地运行良好的方法在 AWS 上不起作用。这可能是什么问题?
const { generateKeyPairSync } = require('crypto');
const { publicKey, privateKey } = generateKeyPairSync('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'spki',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
cipher: 'aes-256-cbc',
passphrase: 'top secret'
}
const ENCRYPTED_pw = crypto.publicEncrypt(
{
key: PUBLIC_KEY,
padding: crypto.constants.RSA_PKCS1_OAEP_PADDING,
oaepHash: "sha256",
},
Buffer.from(body.pw)
);
//convert Array Buffer to String
let encryptedPW = ENCRYPTED_pw.toString("base64");
//INSERT data into DB HERE
//GET data from DB HERE
let decryptedPhoneNum = crypto.privateDecrypt(
{
key: PRIVATE_KEY,
padding: crypto.constants.RSA_PKCS1_OAEP_PADDING,
oaepHash: "sha256",
},
Buffer.from(result[i].pw, "base64")
);
});
【问题讨论】:
标签: javascript node.js amazon-web-services cryptojs