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'
- AES CryptoJSencryption和phpseclib解密
- Nodejs crypto.pbkdf2结果不同于CryptoJS.PBKDF2
- Angular CryptoJs Encryption在Node JS CryptoJS中没有解密
- 用CryptoJS解密openssl AES
- PassportJS – 在将有效载荷数据传递给passport.authenticate作为请求参数之前获取
- .NET和nodejs之间的AESalgorithm值差异,CryptoJS
- Node.js和Mongodb安全+encryption选项的源代码
- Javascriptencryption库不能encryption和解密一个简单的例子程序中的string
- 由于crypto.DEFAULT_ENCODING ='binary',节点6升级导致aws-sdk的SignatureDoesNotMatch错误。