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 利用Image对象实现的埋点(某处的点击数)统计
Dec 28 Javascript
js 控制下拉菜单刷新的方法
Mar 03 Javascript
js截取字符串的两种方法及区别详解
Nov 05 Javascript
javascript基本算法汇总
Mar 09 Javascript
jquery判断对象是否为空并遍历对象的简单实例
Jul 26 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
Nov 05 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
Jun 08 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
Jul 17 Javascript
Vue中添加手机验证码组件功能操作方法
Dec 07 Javascript
vue非父子组件通信问题及解决方法
Jun 11 Javascript
浅析JS中回调函数及用法
Jul 25 Javascript
微信小程序解析富文本过程详解
Jul 13 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
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
python机器学习理论与实战(二)决策树
2018/01/19 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
python中return不返回值的问题解析
2020/07/22 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
小班幼儿评语大全
2014/04/30 职场文书
学雷锋的心得体会
2014/09/04 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
运动会广播稿300字
2015/08/19 职场文书
php双向队列实例讲解
2021/11/17 PHP