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 验证日期的函数
Mar 18 Javascript
js更优雅的兼容
Aug 12 Javascript
获取3个数组不重复的值的具体实现
Dec 30 Javascript
javascript/jquery获取地址栏url参数的方法
Mar 05 Javascript
javascript初学者常用技巧
Sep 02 Javascript
node.js中的fs.futimesSync方法使用说明
Dec 17 Javascript
AngularJs自定义服务之实现签名和加密
Aug 02 Javascript
基于jQuery实现的单行公告活动轮播效果
Aug 23 jQuery
基于jquery实现五星好评
Nov 18 jQuery
jQuery实现仿京东防抖动菜单效果示例
Jul 06 jQuery
JavaScript设计模式之原型模式分析【ES5与ES6】
Jul 26 Javascript
ckeditor一键排版功能实现方法分析
Feb 06 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实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
php下过滤HTML代码的函数
2007/12/10 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
在thinkphp5.0路径中实现去除index.php的方式
2019/10/16 PHP
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
写好自荐信的几个要点
2013/12/26 职场文书
员工培训心得体会
2013/12/30 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
2014年敬老院工作总结
2014/12/08 职场文书
委托书格式范文
2015/01/28 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
Js类的构建与继承案例详解
2021/09/15 Javascript
Python 数据可视化之Bokeh详解
2021/11/02 Python
配置Kubernetes外网访问集群
2022/03/31 Servers