1. 程式人生 > >cryptojs aes 加密 解密

cryptojs aes 加密 解密

最近在做微信公眾號開發,在與後臺的互動中,需要用到 aes,期間也碰到一些問題,在此分享一下自己踩過的坑。

使用cryptojs,這樣一個庫。

  1. 與後臺的互動,首先需要確定後臺 aes 採用的演算法,我的專案中採用的是AES/ECB/PKCS5Padding “演算法/模式/補碼方式”,因此 js 中也要採用同樣的演算法,不然前端跟後臺無法通訊。
  2. 確定好了加密方式之後,js 引入庫檔案時。只引入 aes.js 的話,採用 CBC模式不會有問題,可是採用 ECB 模式會報錯,需要額外引入另外2個js檔案 ,mode-ecb-min.js
    pad-nopadding-min.js
  3. 官方示例, 每次輸出的密文都不一樣,CryptoJS.AES.encrypt(“Message”, “Secret Passphrase”),需要先自己轉換一下
   <script src="js/cryptojs/rollups/aes.js"></script>
    <script src="js/cryptojs/components/mode-ecb-min.js"></script>
    <script src="js/cryptojs/components/pad-nopadding-min.js"></script>
    <script type="text/javascript">
        function aesEncrypt(data, key)
{
var encrypted = CryptoJS.AES.encrypt(data, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return encrypted.toString(); } function aesDecrypt(encrypted, key) { var decrypted = CryptoJS.AES.decrypt(encrypted, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); decrypted = CryptoJS.enc.Utf8.stringify(decrypted);// 轉換為 utf8 字串
return decrypted; } function print(string) { document.write(string + "<br>"); } var key = "0123456789abcdef";//16位 key = CryptoJS.enc.Utf8.parse(key); var encrypted = aesEncrypt("1111", key); var decrypt = aesDecrypt(encrypted.toString(), key); print("aes ecb 加密 解密"); print("加密的密文:".concat(encrypted)); print("解密密文的結果:" + decrypt);
</script>