我的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
答案 0 :(得分:0)
如您所想,TripleDES密钥是DES密钥长度的三倍。您使用的密钥是128位,而预期的密钥大小是192位。
这意味着您有3个必需的密钥中的2个,例如2批64位,第三批64位缺失。
如果省略它们,TripleDES的一些实现将简单地使用第一批64位作为第三批64位。 CryptoJS不会为你做这个,它只是将第三批64位设置为0.结果来自一个使用第一个键作为第三个键的实现,所以我们必须在CryptoJS中模拟这种行为
要解决此问题,请将密钥的值更改为以下内容:ID
。