我正在使用以下函数在Node.js中加密/解密字符串:
var crypto = require('crypto');
var algorithm = 'aes-256-ctr';
function encrypt(text) {
var cipher = crypto.createCipher(algorithm, password);
try {
var crypted = cipher.update(text, 'utf8', 'hex');
crypted += cipher.final('hex');
} catch (e) {
return;
}
return crypted;
}
function decrypt(text) {
var decipher = crypto.createDecipher(algorithm, password);
try {
var dec = decipher.update(text, 'hex', 'utf8');
dec += decipher.final('utf8');
} catch (e) {
return;
}
return dec;
}
(密码被单独存储,与编码文本分开)。Nodejs / crypt包的新版本抱怨:
(node:5212) [DEP0106] DeprecationWarning: crypto.createDecipher is deprecated.
我该如何重写代码以升级我的源代码?
Buffer.concat([Buffer.from(ENCRYPTION_KEY), Buffer.alloc(32)], 32)
作为createCipheriv()
和createDecipheriv()
的第二个参数来填充或缩小到32个字节。 - Thalis K.scrypt(secret, salt, 24, (err, key) => { // cipher/decipher here })
来确保你拥有一个适合你算法的正确长度的密钥。例如,aes192 = 24字节(192位)。如果可能的话,你应该使用一个唯一的盐。 - Learner