一个NodeJs的简单AES加密方法

本文最后更新于$day天前,文中所描述的信息可能已发生改变。

此方法可以自定义长度秘钥,但是与其他语言可能不兼容,因为用了scryptSync生成一个128位的密码。

此方法用ECB加密,所以无需IV向量,但是可以在scryptSync生成秘钥时第二个参数加入slat值。

此方法生成为base64输出,pkcs5padding填充。

可以使用在一些简单加密上,使用方法也简单,避免接触复杂的crypto类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const crypto = require('crypto');
const enckey = "自定义密码";
// 加密
function genSign(src) {
const key = crypto.scryptSync(enckey, '', 16);
let sign = '';
const cipher = crypto.createCipheriv('aes-128-ecb', key, null);
sign += cipher.update(src, 'utf8', 'base64');
sign += cipher.final('base64');
return sign;
}
// 解密
function deSign(sign) {
const key = crypto.scryptSync(enckey, '', 16);
let src = '';
const cipher = crypto.createDecipheriv('aes-128-ecb', key, null);
src += cipher.update(sign, 'base64', 'utf8');
src += cipher.final('utf8');
return src;
}