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 相关文章推荐
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
jQuery实战之品牌展示列表效果
Apr 10 Javascript
jQuery模拟超链接点击效果代码
Apr 21 Javascript
javascript实现跳转菜单的具体方法
Jul 05 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 Javascript
JavaScript学习小结(7)之JS RegExp
Nov 29 Javascript
老生常谈的跨域处理
Jan 11 Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 Javascript
解决JS表单验证只有第一个IF起作用的问题
Dec 04 Javascript
详解webpack4之splitchunksPlugin代码包分拆
Dec 04 Javascript
Layui 动态禁止select下拉的例子
Sep 03 Javascript
vue使用require.context实现动态注册路由
Dec 25 Vue.js
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将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
Laravel中为什么不使用blpop取队列详析
2018/08/01 PHP
JavaScript Chart 插件整理
2010/06/18 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
浅析Jquery操作select
2016/12/13 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
canvas的神奇用法
2017/02/03 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
python三元运算符实现方法
2013/12/17 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
出纳岗位职责模板
2013/11/27 职场文书
招聘单位介绍信
2014/01/14 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
股权转让意向书
2014/04/01 职场文书
给校长的建议书400字
2014/05/15 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
神州牡丹园的导游词
2019/11/20 职场文书