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实现学校的校历(asp.net+jquery ui 1.72)
Jan 01 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
Jan 24 Javascript
基于jquery实现人物头像跟随鼠标转动
Aug 23 Javascript
JavaScript基本数据类型及值类型和引用类型
Aug 25 Javascript
jquery中object对象循环遍历的方法
Dec 18 Javascript
js为什么不能正确处理小数运算?
Dec 29 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
Aug 02 Javascript
Angular4 中内置指令的基本用法
Jul 31 Javascript
egg.js的基本使用和调用数据库的方法示例
May 18 Javascript
浅谈vant组件Picker 选择器选单选问题
Nov 04 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
Nov 05 Javascript
微信小程序onShareTimeline()实现分享朋友圈
Jan 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
php中的观察者模式
2010/03/24 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
python 简易计算器程序,代码就几行
2009/08/29 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
Python 文件操作的详解及实例
2017/09/18 Python
python 如何将office文件转换为PDF
2020/09/22 Python
python切割图片的示例
2020/11/12 Python
THE OUTNET英国官网:国际设计师品牌折扣网站
2016/08/14 全球购物
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
企业节能减排实施方案
2014/03/19 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
高中生旷课检讨书
2014/10/08 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js