尝试在nodejs中完成加密时,密钥长度问题无效

时间:2018-04-02 06:25:49

标签: node.js

我正在尝试在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中创建加密和解密。

3 个答案:

答案 0 :(得分:0)

我对节点不熟悉。我使用此Encrypt plugin。它非常易于使用。

答案 1 :(得分:0)

  

错误:密钥长度无效

您收到此错误的原因是您的密钥d6F3Efeq长度只有8个字符。 aes-256-gcm要求密钥长度为32个字符。

var cipher = crypto.createCipheriv(algorithm, 'd6F3Efeqd6F3Efeqd6F3Efeqd6F3Efeq', iv);

答案 2 :(得分:0)

为什么要重新发明轮子? kruptein处理大多数AES模式和密钥大小,并使用了authTagAADCCM模式下可用的GCMOCB功能。 / p>

const kruptein = require('kruptein');

kruptein.init({secret: 'squirrel'});

let ciphertext = kruptein.set('Foo Bar!');
let plaintext = kruptein.get(ciphertext);