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 相关文章推荐
jquery插件制作 自增长输入框实现代码
Aug 17 jQuery
Js中获取frames中的元素示例代码
Jul 30 Javascript
JavaScript解析URL参数示例代码
Aug 12 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
Jan 20 Javascript
JS+DIV实现鼠标划过切换层效果的方法
May 25 Javascript
JS控制文本域只读或可写属性的方法
Jun 24 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
Aug 10 Javascript
Node.js复制文件的方法示例
Dec 29 Javascript
JavaScript 五大常见函数
Mar 23 Javascript
JS错误处理与调试操作实例分析
Apr 13 Javascript
js实现弹窗效果
Aug 09 Javascript
如何vue使用el-table遍历循环表头和表体数据
Apr 26 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
php 调试利器debug_print_backtrace()
2012/07/23 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
php简单复制文件的方法
2016/05/09 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python模拟登陆实现代码
2017/06/14 Python
python实现聚类算法原理
2018/02/12 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
美国在线购物频道:Shop LC
2019/04/21 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
毕业实习个人鉴定范文
2013/12/10 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
圣诞晚会主持词
2015/07/01 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
多人股份制合作协议书
2016/03/19 职场文书
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python