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 相关文章推荐
JavaScript 私有成员分析
Jan 13 Javascript
jQuery 对象中的类数组操作
Apr 27 Javascript
JavaScript为对象原型prototype添加属性的两种方式
Aug 01 Javascript
手把手教你自己写一个js表单验证框架的方法
Sep 14 Javascript
Script的加载方法小结
Jan 12 Javascript
js 自动播放的实例代码
Nov 19 Javascript
Javascript改变CSS样式(局部和全局)
Dec 18 Javascript
浅谈javascript事件取消和阻止冒泡
May 26 Javascript
JavaSacript中charCodeAt()方法的使用详解
Jun 05 Javascript
JS实现禁止鼠标右键的功能
Oct 15 Javascript
完美的js图片轮换效果
Feb 05 Javascript
JavaScript制作简单的框选图表
May 15 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怎样调用MSSQL的存储过程
2006/10/09 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
js实现微信聊天效果
2020/08/09 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
python中的函数用法入门教程
2014/09/02 Python
独特的python循环语句
2016/11/20 Python
Python中文件的读取和写入操作
2018/04/27 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
运行Python编写的程序方法实例
2020/10/21 Python
一个入门级python爬虫教程详解
2021/01/27 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
.net笔试题
2014/03/03 面试题
乡镇干部先进事迹材料
2014/02/03 职场文书
军训考核自我鉴定
2014/02/13 职场文书
便利店促销方案
2014/02/20 职场文书
汇源肾宝广告词
2014/03/20 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
小学生作文评语大全
2014/04/21 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
经典禁毒标语
2014/06/16 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server