JS实现AES加密并与PHP互通的方法分析


Posted in Javascript onApril 19, 2017

本文实例讲述了JS实现AES加密并与PHP互通的方法。分享给大家供大家参考,具体如下:

有关数据加密解密问题,有很多钟加密方式;

这里我讲述下js和php实现AES互通

js加密:

首先引入这几个js文件

本站下载地址

<script type="text/JavaScript" src="/CryptoJS/aes.js"></script>
<script type="text/javascript" src="/CryptoJS/pad-zeropadding.js"></script>
<script type="text/javascript">
var data="test";//加密字符串
var key = CryptoJS.enc.Latin1.parse('@12345678912345!');//密钥
var iv = CryptoJS.enc.Latin1.parse('@12345678912345!');//与密钥保持一致
//加密
var data = JSON.stringify(data);//将数据对象转换为json字符串
var encrypted = CryptoJS.AES.encrypt(data,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});
encrypted=encodeURIComponent(encrypted);
document.write(decrypted);//输出加密后的字符串
//解密
var data="加密的字符串";
//key和iv和加密的时候一致
 var decrypted = CryptoJS.AES.decrypt(data,key,{iv:iv,padding:CryptoJS.pad.ZeroPadding});
 decrypted=decrypted.toString(CryptoJS.enc.Utf8);
 document.write(decrypted);//输出解密后的数据
</script>

注意:在实际用的时候和php传输中,js加密后的字符串里面的+被浏览器解析成了空格  然后php解密的时候出错;这里可以对加密之后的字符串做进一步处理encrypted=encodeURIComponent(encrypted);就没有这个问题了

PHP的加密解密方法:

$privateKey="@12345678912345!";
$iv="@12345678912345!";
//加密
$encrypted=mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$privateKey,$data,MCRYPT_MODE_CBC,$iv);
echo base64_encode($encrypted);
//解密
$encryptedData=base64_decode($data);
$decrypted=mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$privateKey,$encryptedData,MCRYPT_MODE_CBC,$iv);
$decrypted=rtrim($decrypted,"\0");//注意!解密出来的数据后面会出现六个红点;这句代码可以处理掉,从而不影响进一步的数据操作
return $decrypted;

Javascript 相关文章推荐
setTimeout和setInterval的浏览器兼容性分析
Feb 27 Javascript
javascript调试说明
Jun 07 Javascript
用Jquery实现多级下拉框无刷新的联动
Dec 22 Javascript
jQuery on()方法示例及jquery on()方法的优点
Aug 27 Javascript
jquery自定义表格样式
Nov 23 Javascript
layui分页效果实现代码
May 19 Javascript
微信小程序封装http访问网络库实例代码
May 24 Javascript
angular实现图片懒加载实例代码
Jun 08 Javascript
vue 文件目录结构详解
Nov 24 Javascript
layui table 获取分页 limit的方法
Sep 20 Javascript
JS实现网页时钟特效
Mar 25 Javascript
JavaScript数组reduce()方法的语法与实例解析
Jul 07 Javascript
vue2.0父子组件间通信的实现方法
Apr 19 #Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
Apr 19 #Javascript
微信小程序页面传值实例分析
Apr 19 #Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
Apr 19 #Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
Apr 19 #Javascript
angular-cli修改端口号【angular2】
Apr 19 #Javascript
Angular2自定义分页组件
Apr 19 #Javascript
You might like
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
php统计文章排行示例
2014/03/04 PHP
php获得url参数中具有&amp;的值的方法
2014/03/05 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
JavaScript使用prototype定义对象类型(转)[
2006/12/22 Javascript
jquery获得下拉框值的代码
2011/08/13 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
javascript模块化简单解析
2016/04/07 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
React组件生命周期详解
2017/07/03 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
python 循环数据赋值实例
2019/12/02 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
法国在线药房:DoctiPharma
2020/10/21 全球购物
delegate与普通函数的区别
2014/01/22 面试题
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
交通专业个人自荐信格式
2013/09/23 职场文书
教学评估实施方案
2014/03/16 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
团委工作总结2015
2015/04/02 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
信用卡催款律师函
2015/05/27 职场文书