您的位置:首页 > Web前端

PHP开发过程中AES加密解密问题 js前端AES加密,PHP解密

2017-03-16 14:20 537 查看
    因开发需求,需要通过前端js加密传输数据,通过各种度娘搜索最后采用了AES方式,但是发现有的是有代码没文件,有的是测试解密出现乱码,现在将自己最后采用的方式总结一下。

  首先就是关于所引用的AES加密解密包的js文件,最后自己使用的文件地址为:http://download.csdn.net/detail/zhang517614202/9033319

个人测试文件包地址:http://download.csdn.net/detail/phplittleboy/9783261


加密解密过程中的向量和秘钥必须保持一致,而且必须为16位(亲测必须为16位)


代码示例:

JS加密代码:

              <!DOCTYPE html>

<html>

    <head>

        <title>加密测试</title>

        <script src="./rollups/aes.js"></script>

        <script src="./rollups/md5.js"></script>

        <script src="./components/pad-zeropadding.js"></script>

        <script src="./jquery.min.js"></script>

        <meta charset="utf-8" />

    </head>

    <body>

        加密结果:<p style="color:red;" id='end'></p>

        <script>

            var key = CryptoJS.enc.Latin1.parse('1234567890654321');        //秘钥 16位

            var iv =    CryptoJS.enc.Latin1.parse('1234567890123456');      //向量 16位

            var data = "AES加密测试";     //要加密的数据

            var encrypted = CryptoJS.AES.encrypt(data, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding });

            $("#end").text(encrypted); 


             //加密结果为:[b]NRhLlhis3QLXcpzGv8S1NA==

        </script>

            

    </body>

</html>
[/b]

PHP解密代码:

 <?php

        $key = "1234567890654321"; //秘钥 16位

        $iv = "1234567890123456";  //向量 16位

        $data = "NRhLlhis3QLXcpzGv8S1NA==";    

        $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($data), MCRYPT_MODE_CBC, $iv);

        echo "解密结果:<p style='color:blue;'>".$decrypted."</p>";

    ?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息