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 相关文章推荐
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
Nov 28 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
Jan 07 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
Oct 11 Javascript
JavaScript中DOM详解
Apr 13 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
Jun 13 Javascript
JSON与XML的区别对比及案例应用
Nov 11 Javascript
使用JS 插件qrcode.js生成二维码功能
Feb 20 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
原生实现一个react-redux的代码示例
Jun 08 Javascript
详解react内联样式使用webpack将px转rem
Sep 13 Javascript
微信小程序之数据绑定原理解析
Aug 14 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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
PHP SQLite类
2009/05/07 PHP
PHP 翻页 实例代码
2009/08/07 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
PHP微框架Dispatch简介
2014/06/12 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
如何通过JS实现日历简单算法
2020/10/14 Javascript
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
python自动发送邮件脚本
2018/06/20 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
应聘收银员个人的求职信
2013/11/30 职场文书
七年级生物教学反思
2014/01/30 职场文书
运动会通讯稿150字
2014/02/15 职场文书
导师就业推荐信范文
2014/05/22 职场文书
小学捐书活动总结
2014/07/05 职场文书
课外活动总结范文
2014/07/09 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL