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 相关文章推荐
JS应用之禁止抓屏、复制、打印
Feb 21 Javascript
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
Jul 19 Javascript
JQuery UI皮肤定制
Jul 27 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
Dec 31 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
Dec 18 Javascript
JavaScript中定义类的方式详解
Jan 07 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
Feb 19 Javascript
Node.js搭建小程序后台服务
Jan 03 Javascript
JavaScript事件委托原理与用法实例分析
Jun 07 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 Javascript
javascript实现抢购倒计时程序
Aug 26 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
Sep 18 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
配置最新的PHP加MYSQL服务器
2006/10/09 PHP
用libtemplate实现静态网页生成
2006/10/09 PHP
PHP学习之PHP变量
2006/10/09 PHP
php 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
php微信开发之图片回复功能
2018/06/14 PHP
深入理解Javascript里的依赖注入
2014/03/19 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
js html实现计算器功能
2018/11/13 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
JavaScript快速调试的两个技巧
2020/11/04 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
计算机专业毕业生的自我评价
2013/11/18 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
高等教育专业自荐信范文
2014/03/26 职场文书
品牌服务方案
2014/06/03 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
Python使用pyecharts控件绘制图表
2022/06/05 Python