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端的向量保持一致
如果大家在使用的过程中遇到了问题可以随时在下方评论,我看到的话一定第一时间和大家一起研究出现的问题,