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 相关文章推荐
JSQL 基于客户端的成绩统计实现方法
May 05 Javascript
js charAt的使用示例
Feb 18 Javascript
javascript的propertyIsEnumerable()方法使用介绍
Apr 09 Javascript
2014年50个程序员最适用的免费JQuery插件
Dec 15 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
Jun 06 Javascript
jquery拼接ajax 的json和字符串拼接的方法
Mar 11 Javascript
javascript中mouseenter与mouseover的异同
Jun 06 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
Jun 13 Javascript
原生JS上传大文件显示进度条 php上传文件代码
Mar 27 Javascript
vue实现Excel文件的上传与下载功能的两种方式
Jun 28 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
Jun 04 Javascript
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
Apr 03 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
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
destoon各类调用汇总
2014/06/20 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
如何在PHP中生成随机数
2020/06/04 PHP
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
Django实现文件上传下载功能
2019/10/06 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
2020/02/05 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
Python eval函数原理及用法解析
2020/11/14 Python
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
最新大学生自我评价
2013/09/24 职场文书
园林施工员岗位职责
2013/12/11 职场文书
办公室副主任职责范本
2014/03/08 职场文书
会计学毕业生求职信
2014/06/25 职场文书
故意杀人案辩护词
2015/05/21 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
小学生暑假生活总结
2015/07/13 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript