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 相关文章推荐
在网页中屏蔽快捷键
Sep 06 Javascript
jquery 跨域访问问题解决方法(笔记)
Jun 08 Javascript
基于JavaScript 类的使用详解
May 07 Javascript
window.location.href IE下跳转失效的解决方法
Mar 27 Javascript
js实现异步循环实现代码
Feb 16 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
Aug 02 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
Nov 09 Javascript
js实现拖拽上传图片功能
Aug 01 Javascript
jQuery的Ajax接收java返回数据方法
Aug 11 jQuery
Vue动态组件与异步组件实例详解
Feb 23 Javascript
jQuery中each和js中forEach的区别分析
Feb 27 jQuery
JavaScript 继承 封装 多态实现及原理详解
Jul 29 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
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
Python深入学习之对象的属性
2014/08/31 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
Python基础之文件读取的讲解
2019/02/16 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
会计岗位职责范本
2014/03/07 职场文书
给校长的建议书
2014/03/12 职场文书
工程承包协议书范本
2014/09/29 职场文书
党员个人承诺书
2015/04/27 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL