最近遇到了前端需要des加密一個http的頭部數據,所以在網上找了一些javascript直接寫出來的des加解密框架,比對三個框架,三個不同的答案,並且三個答案都和服務器可以正確解密的秘鑰不同。。。。
於是乎在同事的幫助下找到一個nodeJS可以正確解析的框架,但是nodeJS不可以跑在瀏覽器上,所以需要通過Browserify打包。打包出來的des3.js已經上傳到了
https://github.com/YuyangWitness/yixingxiao/blob/master/js/des3.js
用法很簡單
//加密 DES3.encrypt({ alg: 'des-ede3-cbc', //3des-cbc autoPad: true, key: 'xxxxx', //秘鑰 plaintext: 'xxxxx', //需要加密的數據 iv: '74756231' }); //解密 DES3.decrypt({ alg: 'des-ede3-cbc', //3des-cbc autoPad: true, key: 'xxx', //秘鑰 encrypttext: 'xxxxx', //已經加密的數據 iv: '74756231' });
由於上面的包比較大,所以通過壓縮四個主要包減小大小,合成了tripledes.js代碼
https://github.com/YuyangWitness/yixingxiao/blob/master/js/tripledes.js
用法如下:
//加密 function encrypt(param) { var keyHex = CryptoJS.enc.Utf8.parse(param.key); var ivHex = CryptoJS.enc.Utf8.parse(param.iv); ar encrypted = CryptoJS.TripleDES.encrypt(param.plaintext, keyHex, { iv: ivHex }); var ciph = CryptoJS.enc.Base64.stringify(encrypted.ciphertext); console.info(ciph); return ciph; } //解密 function decrypt(param) { var keyHex = CryptoJS.enc.Utf8.parse(param.key); var ivHex = CryptoJS.enc.Utf8.parse(param.iv); var decrypted = CryptoJS.TripleDES.decrypt({ ciphertext: CryptoJS.enc.Base64.parse(param.encrypttext) }, keyHex, { iv: ivHex }); var txt = decrypted.toString(CryptoJS.enc.Utf8); console.info(txt); return txt; } encrypt({ key: 'cntaipingcomcn@lx100$#36', plaintext: '1249603', iv: '74756231' }); decrypt({ key: 'cntaipingcomcn@lx100$#36', encrypttext: 'bFPvUJsj4Ms=', iv: '74756231' }); encrypt({ key: 'cntaipingcomcn@lx100$#36', plaintext: '00001214601', v: '74756231' }); decrypt({ key: 'cntaipingcomcn@lx100$#36', encrypttext: 'LyfI0BvWSSEYg0TpQVbbzg==', iv: '74756231' });
