无效的密钥长度 node.js 三重 DES 加密

Invalid key length node.js triple DES encrpytion

var tripleDES = new TripleDESCryptoServiceProvider();
var sha1 = new SHA1CryptoServiceProvider();

var keyBytes = System.Text.Encoding.Unicode.GetBytes(key);
var hashKey = sha1.ComputeHash(keyBytes);
System.Array.Resize(ref hashKey, ((tripleDES.KeySize / 8)));
tripleDES.Key = hashKey;

我是 node.js 的新手,正在尝试将加密从 c# 切换到 node.js,但它给出了 Invalid key length 22 的错误,下面是 node.js 代码。

var text = "test";
var des_key = new Buffer("abcdefghijklmnopqrstuv",'utf8');
var des_iv = new Buffer(0);

var des_decryption = crypto.createCipheriv("DES-EDE3", des_key, des_iv);
var test = des_decryption.update(text,'utf8','base64');
test+=des_decryption.final('base64')
console.log("test:"+test)

我已经编辑了下面的代码以显示正确的代码

var text = "test";
var des_key = new Buffer("abcdefghijklmnopqrstuv",'base64');
var des_iv = new Buffer(IV,'base64');

var des_decryption = crypto.createCipheriv("DES-EDE3-CBC", des_key, des_iv);
var test = des_decryption.update(text,'ucs2','base64'); //ucs2 is the same as utf16
test+=des_decryption.final('base64')
console.log("test:"+test)

这可能是由于 key-length. Triple DES expect key length of 128-bit or 192-bit depending on its KeySize 设置不匹配造成的。因此,您必须为 128-bit 提供 16 bytes 键或为 192-bit.

提供 24 bytes

此处,您的错误显示您提供的 Triple DES 密钥长度为 22 bytes

Invalid key length 22

这两种情况都不可接受。

检查你的 tripleDES.KeySize。如果是 128,请确保您的 hashKey 是 16 字节长度,如果是 192,请确保您的 hashKey24-bytes 长度。