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>";
?>
首先就是关于所引用的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>";
?>
相关文章推荐
- PHP使用mcrypt进行AES加密后的数据NodeJS等无法解密的问题修复方案
- 服务端AES加密解密,前端crypto-js加密解密
- RSA实现JS前端加密,PHP后端解密
- Php AES加密、解密与Java互操作的问题
- 关于PHP URL加密与JS url解密问题
- RSA实现JS前端加密,PHP后端解密
- php后端加密js前端解密mcrypt_module替换为openssl_encrypt
- 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)
- RSA实现JS前端加密,PHP后端解密
- Php AES加密、解密与Java互操作的问题
- JS AES加密与PHP解密
- RSA AES 前端JS与后台JAVA的加密解密的是实现
- 【前端Js】高级加密解密标准AES加密(Javascript代码实现)
- RSA实现JS前端加密,PHP后端解密
- 用 C++开发了一个Sql Server加密解密的存储过程,同时在此基础上写了两个加密解密的函数
- js与php加密、解密函数
- PHP扩展开发过程中的问题
- PHP mcrypt启用、加密以及解密过程详解
- web前端url传递值 js加密解密
- [小代码]在Android和PHP之间的加密/解密,AES加密