Node.JS中的3des加密返回无效的IV长度

时间:2014-06-24 10:34:35

标签: javascript node.js encryption 3des tripledes

我是Node的新手,遇到了加密对象的问题:

var des3_key = new Buffer("redacted", "base64"); // copied from key in chilk
var des3_iv = new Buffer("alsoredacted", "base64"); // copied from iv in chilk
var des3_encryption = crypto.createCipheriv("des3", des3_key, des3_iv);
// encode a string
var string_to_encode = "thisisatest";
var ciphered_string = des3_encryption.update(string_to_encode, "utf8", "base64");
console.log(string_to_encode+" "+ciphered_string);

在节点控制台和服务器上运行时,第6行都会导致错误node-crypto: Invalid IV length 32,而不是按预期返回加密对象。

我删除的密钥和IV以及他们的加密类型是从另一个文件复制的,但为了测试我尝试了各种字符串和加密类型,但仍然得到相同的错误,但错误长度不同。 / p>

我对加密的了解仅限于我之前使用过的内容,而不幸的是,我在这方面无法找到Node的故障排除资源。任何帮助将不胜感激。

编辑:尝试使用des和des3会产生相同的结果。

1 个答案:

答案 0 :(得分:1)

来自OP的编辑:

解决:

工作代码:

var string_to_decode = "encrypted string";
var des_key = new Buffer("key string", "base64");
var des_iv = new Buffer(0);
var des_decryption = Crypto.createDecipheriv("DES-EDE3", des_key, des_iv);
var deciphered_string = des_decryption.update(string_to_decode, "base64", "utf8");
    console.log("["+string_to_decode+"] => ["+deciphered_string+"]");

我发现这是通过制作一个脚本来猜测密钥和IV长度,加密类型和方法以及编码类型的组合,直到它产生正确的字符串。这是最后的手段,但它奏效了。