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 相关文章推荐
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
Mar 08 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 Javascript
有关JavaScript中call()和apply() 的一些理解
May 20 Javascript
webpack+vue.js快速入门教程
Oct 12 Javascript
AngularJS中transclude用法详解
Nov 03 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
Jan 04 Javascript
DOM事件探秘篇
Feb 15 Javascript
js以及jquery实现手风琴效果
Apr 17 Javascript
原生js实现选项卡功能
Mar 08 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
Jul 03 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 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的autoLoad自动加载机制
2012/09/27 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
python uuid模块使用实例
2015/04/08 Python
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
数据库面试要点基本概念
2013/10/31 面试题
《愚公移山》教学反思
2014/02/20 职场文书
爱耳日活动总结
2014/04/30 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
党员检讨书
2014/10/13 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers
django 认证类配置实现
2021/11/11 Python
Redis高可用集群redis-cluster详解
2022/03/20 Redis