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 相关文章推荐
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
Mar 16 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
Apr 12 Javascript
Javascript MVC框架Backbone.js详解
Sep 18 Javascript
jquery.ajax之beforeSend方法使用介绍
Dec 08 Javascript
js实现带圆角的两级导航菜单效果代码
Aug 24 Javascript
jQuery实现的简洁下拉菜单导航效果代码
Aug 26 Javascript
深入浅析JavaScript中的作用域和上下文
Mar 26 Javascript
微信小程序开发探究
Dec 27 Javascript
微信小程序实战之自定义抽屉菜单(7)
Apr 18 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
Feb 27 Javascript
Koa2 之文件上传下载的示例代码
Mar 29 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 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
解析csv数据导入mysql的方法
2013/07/01 PHP
两款万能的php分页类
2015/11/12 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
js模块加载方式浅析
2017/08/12 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
基于Python的关键字监控及告警
2017/07/06 Python
python中的随机函数小结
2018/01/27 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
Python登录系统界面实现详解
2019/06/25 Python
Python 控制终端输出文字的实例
2019/07/12 Python
python 实现单例模式的5种方法
2020/09/23 Python
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
2014年服务员工作总结
2014/11/18 职场文书
公司表扬稿范文
2015/05/05 职场文书
2015暑假假期总结
2015/07/13 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
理解python中装饰器的作用
2021/07/21 Python