Crypto JS:TripleDES不能正确encryption

当使用crypto js tripleDESencryption时,我注意到所有要encryption的string长度都很小,例如“01”,“111”,“20”,但是如“5000021234567890000”这样的长string,输出不正确,是不是我期待的价值。 例如对于这个“5000021234567890000” ,我期待这个: “HctDaKc / U9avOwZMSS5mEi62kfojDHA4”,但我得到这个,而不是: HctDaKc / U9bNnFy6eZHqHj3SemorJxQM

这是我find并用于encryption的代码

let key = CryptoJS.MD5(enckey); key.words[4] = key.words[0]; key.words[5] = key.words[1]; let iv = CryptoJS.lib.WordArray.create(64/8); CryptoJS.TripleDES.encrypt("5000021234567890000", key, {iv: iv}); 

您的帮助将非常感激。

看着encryption的数据,第一个块匹配,下面两个块不匹配。

     HctDaKc / U9avOwZMSS5mEi62kfojDHA4
     1DCB4368A73F53D6 AF3B064C492E6612 2EB691FA230C7038

     HctDaKc / U9bNnFy6eZHqHj3SemorJxQM
     1DCB4368A73F53D6 CD9C5CBA7991EA1E 3DD27A6A2B27140C

IV大概都是0x00字节。

这表示一个正在使用ECB模式,另一个正在使用CBC模式。

请参阅分块密码操作模式 ,特别是ECB和CBC模式。

ECB模式独立地encryption每个块,CBC模式用前面的数据块来encryption,第一个数据块encryption。 由于IV的值都是0x00,因此不会对第一个块进行更改。

选项可以在encryption器的创build中指定,您需要查看文档页面,祝您好运。

它看起来像这样:

 encryptor = crypto.createCipheriv( mode, key, iv) 

其中模式是'des-ede', 'des-ede-cbc', 'des-ede3', 'des-ede3-cbc', 'des3'