NodeJs 中的 AES 解密

问题描述 投票:0回答:1

我正在开发一个项目,需要实现一个程序,生成 32 字节 AES 密钥(对称密钥),将该密钥发送到服务器,然后使用相同的密钥解密从服务器接收的数据。然而,我在有效实施这一流程方面面临着挑战。

我正在 NodeJs 中使用 crypto 模块。

  1. 为了生成 AES 密钥,我使用了以下代码:

    const key = crypto.randomBytes(32); // Output: aesEncryptionKeyaesEncryptionKey (example)

  2. 然后我对该密钥进行编码并将其发送到服务器,他们在服务器上使用该密钥来加密数据

  3. 收到此加密数据后,我需要使用在步骤 1 中生成的密钥来解密数据。

    let key = 'aesEncryptionKeyaesEncryptionKey';
    let encrypted_text = 'wHCS+Op6ZDc2fy2xwezssW/ThsVq7r2bozo7zze5w5r8d5vtTjlwmZXZWb/d2H7z';
    
    const decipher = crypto.createDecipheriv('aes-256-ecb', Buffer.from(key, 'utf8'), Buffer.alloc(0));
    let decryptedKey = decipher.update(encrypted_text, 'base64', 'utf8');
    decipher.setAutoPadding(true);
    let decryptedKeybuffer = Buffer.concat([decryptedKey, decipher.final()]);
    

但是我收到以下错误

javascript node.js encryption aes ecb
1个回答
0
投票
let key = 'aesEncryptionKeyaesEncryptionKey';
let encrypted_text = 'wHCS+Op6ZDc2fy2xwezssW/ThsVq7r2bozo7zze5w5r8d5vtTjlwmZXZWb/d2H7z';

const decipher = crypto.createDecipheriv('aes-256-ecb', Buffer.from(key, 'utf8'), Buffer.alloc(0));
let decryptedKey = decipher.update(encrypted_text, 'base64', 'utf8');
decipher.setAutoPadding(true);
let decryptedKeybuffer = Buffer.concat([decryptedKey, decipher.final()]);

可以使用

Buffer.from()
方法将字符串键转换为缓冲区。为了解密数据,我使用
createDecipheriv()
方法创建了一个新的解密对象。

目前正在使用

update()
函数对数据进行解密,并通过
final()
方法完成解密过程。为了确保数据在加密之前得到适当的填充,请使用
setAutoPadding()
方法。

我希望这有用。请随时发表评论以获得更多帮助。

© www.soinside.com 2019 - 2024. All rights reserved.