我正在尝试在nodejs中进行加密和解密。
encrypt.js
module.exports=function(crypto) {
algorithm = 'aes-256-gcm',
password = 'd6F3Efeq';
iv = '60iP0h6vJoEa';
this.testFunc=function(text) {
var cipher=crypto.createCipheriv(algorithm,password,iv);
var crypted=cipher.update(text,'utf8','hex');
crypted +=cipher.final('hex');
var tag=cipher.getAuthTag();
return {
content:encrypted,
tag:tag
}
}
}
当我用参数调用testFunc()时,它显示以下错误。
Error: Invalid key length
at new Cipheriv (internal/crypto/cipher.js:139:16)
at Object.createCipheriv (crypto.js:98:10)
at module.exports.testFunc (/var/www/html/nodejs/encrypt.js:26:21)
at /var/www/html/nodejs/routes.js:17:19
我跟着this link在nodejs中创建加密和解密。
答案 0 :(得分:0)
我对节点不熟悉。我使用此Encrypt plugin。它非常易于使用。
答案 1 :(得分:0)
错误:密钥长度无效
您收到此错误的原因是您的密钥d6F3Efeq
长度只有8个字符。 aes-256-gcm
要求密钥长度为32个字符。
var cipher = crypto.createCipheriv(algorithm, 'd6F3Efeqd6F3Efeqd6F3Efeqd6F3Efeq', iv);
答案 2 :(得分:0)
为什么要重新发明轮子? kruptein处理大多数AES模式和密钥大小,并使用了authTag
,AAD
和CCM
模式下可用的GCM
和OCB
功能。 / p>
const kruptein = require('kruptein');
kruptein.init({secret: 'squirrel'});
let ciphertext = kruptein.set('Foo Bar!');
let plaintext = kruptein.get(ciphertext);