JS客户端实现AES加密请求 PHP服务端实现AES解密

首先去github里面下载AES加密所用到的文件 文件地址(https://github.com/ycy1186358136/git.git

然后引入下载下来的JS文件 (贴下代码)

 <script type="text/javascript" src="./aes.js" ></script>
        <script type="text/javascript" src="./md5.js" ></script>
        <script type="text/javascript" src="./pad-zeropadding-min.js" ></script>
        <script>
            /**
             * 加密
             */
            function encrypt(str, key) {
                key = CryptoJS.enc.Utf8.parse(key ? key : "1111111111111111");// 秘钥
                var iv = CryptoJS.enc.Utf8.parse('1234567890123412');//向量iv
                var encrypted = CryptoJS.AES.encrypt(str, key, {iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding});
                return encrypted.toString();
            }
            /**
             * 解密
             * @param str
             */
            function decrypt(str) {
                var key = CryptoJS.enc.Utf8.parse("1111111111111111");// 秘钥
                var iv = CryptoJS.enc.Utf8.parse('1234567890123412');//向量iv
                var decrypted = CryptoJS.AES.decrypt(str, key, {iv: iv, padding: CryptoJS.pad.ZeroPadding});
                return decrypted.toString(CryptoJS.enc.Utf8);
            }
//调用
//加密
            console.log(CryptoJS.pad.ZeroPadding);
            console.log(encrypt("待加密字符"));
//解密
            console.log(decrypt("待解密字符")); 
</script>
PHP端使用代码:
  $privateKey = "1111111111111111"; //秘钥
        $iv = "1234567890123412"; //向量
        $data = "js加密的字符";
//解密
        $encryptedData = base64_decode($data);
        $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateKey, $encryptedData, MCRYPT_MODE_CBC, $iv);
        $decrypted = rtrim($decrypted, "\0"); //注意!解密出来的数据后面会出现六个红点;这句代码可以处理掉,从而不影响进一步的数据操作
        echo($decrypted);
使用时候切记 PHP端的秘钥和js端的秘钥要保持一致
PHP的向量的值一定要和JS端的向量保持一致
如果大家在使用的过程中遇到了问题可以随时在下方评论,我看到的话一定第一时间和大家一起研究出现的问题,

 

posted @ 2018-01-01 22:40  13113040576  阅读(323)  评论(0编辑  收藏  举报