3des加密没有得到预期的结果

时间:2017-11-10 05:54:10

标签: node.js encryption 3des

我的nodejs 3DES加密没有得到预期的结果。我的代码有什么问题吗?



let cryptojs = require('crypto-js')
var key = '412B121B61C9782FCA6B983AF29862AA';
var message = '46574669849832145886804657466984';

key = cryptojs.enc.Hex.parse(key);
message = cryptojs.enc.Hex.parse(message);

var result = cryptojs.TripleDES.encrypt(message, key, {mode: cryptojs.mode.ECB, padding: cryptojs.pad.NoPadding});

console.log (result.key.toString());
console.log (result.ciphertext.toString());
console.log (result.toString());




输出

412b121b61c9782fca6b983af29862aa
511e4f67d9dd0f840c4689348e2e7ce3
UR5PZ9ndD4QMRok0ji584w==

然而预期应该是

2B4D7E0FE9672FEA5CDF60735B58D356

1 个答案:

答案 0 :(得分:0)

如您所想,TripleDES密钥是DES密钥长度的三倍。您使用的密钥是128位,而预期的密钥大小是192位。

这意味着您有3个必需的密钥中的2个,例如2批64位,第三批64位缺失。

如果省略它们,TripleDES的一些实现将简单地使用第一批64位作为第三批64位。 CryptoJS不会为你做这个,它只是将第三批64位设置为0.结果来自一个使用第一个键作为第三个键的实现,所以我们必须在CryptoJS中模拟这种行为

要解决此问题,请将密钥的值更改为以下内容:ID