帮我写一个AES加密函数
时间: 2023-08-28 12:39:31 浏览: 139
实现AES 加密算法
当然可以,以下是一个使用Node.js的AES加密函数:
```
const crypto = require('crypto');
function encryptAES(text, key) {
const iv = crypto.randomBytes(16);
const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
let encrypted = cipher.update(text, 'utf8', 'hex');
encrypted += cipher.final('hex');
return iv.toString('hex') + ':' + encrypted;
}
function decryptAES(encryptedText, key) {
const parts = encryptedText.split(':');
const iv = Buffer.from(parts.shift(), 'hex');
const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
let decrypted = decipher.update(parts.join(':'), 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
// 测试
const key = 'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6';
const text = 'Hello, world!';
const encrypted = encryptAES(text, key);
console.log('Encrypted:', encrypted);
const decrypted = decryptAES(encrypted, key);
console.log('Decrypted:', decrypted);
```
这个函数使用了Node.js的crypto模块,使用AES-256-CBC算法进行加密和解密。在加密时,我们使用一个随机生成的16字节的初始向量iv,将其与密文一起返回。在解密时,我们从加密文本中提取出iv,并使用它来创建解密器。
阅读全文