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

浙公网安备 33010602011771号