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

来源:互联网 发布:九分裤 知乎 鞋子 编辑:程序博客网 时间:2024/05/23 23:21

    因开发需求,需要通过前端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); 

             //加密结果为:NRhLlhis3QLXcpzGv8S1NA==
        </script>
            
    </body>
</html>


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>";
    ?>

1 0