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翻页效果
Jul 23 Javascript
prototype Element学习笔记(篇一)
Oct 26 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
Nov 26 Javascript
jQuery简单图表peity.js使用示例
May 02 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
Sep 06 Javascript
JavaScript性能优化之小知识总结
Nov 20 Javascript
原生js实现旋转木马轮播图效果
Feb 27 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
Jun 12 jQuery
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 jQuery
解决vue点击控制单个样式的问题
Sep 05 Javascript
React 组件渲染和更新的实现代码示例
Feb 21 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
PHPMyAdmin 快速配置方法
2009/05/11 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
PHP输出日历表代码实例
2015/03/27 PHP
PHP实现的操作数组类库定义与用法示例
2019/05/24 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
js 实现复制到粘贴板的功能代码
2010/05/13 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
node.js中的fs.statSync方法使用说明
2014/12/16 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python3爬虫全国地址信息
2019/01/05 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
linux面试题参考答案(10)
2013/11/04 面试题
自我鉴定200字
2013/10/28 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
生日寄语大全
2014/04/08 职场文书
村庄绿化方案
2014/05/07 职场文书
机关党员公开承诺书
2014/08/30 职场文书
2014年仓库工作总结
2014/11/20 职场文书
民事申诉状范本
2015/05/20 职场文书
七年级话题作文之执着
2019/11/19 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB