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”),需要先自己转换一下
  4.  http://download.csdn.net/detail/on_the_way_to_travel/9464291 js库的下载地址
    最后贴代码
   <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 + "
"
); } 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>

你可能感兴趣的:(javascript)