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 - HTML的request类
Jan 09 Javascript
document.getElementById介绍
Sep 13 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
Aug 26 Javascript
jquery与prototype框架的详细对比
Nov 21 Javascript
关闭浏览器时提示onbeforeunload事件
Dec 25 Javascript
js判断登录与否并确定跳转页面的方法
Jan 30 Javascript
JS+CSS实现可拖动的弹出提示框
Feb 16 Javascript
浅谈Jquery核心函数
Jun 18 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
Dec 17 Javascript
JavaScript数组_动力节点Java学院整理
Jun 26 Javascript
深入浅出es6模板字符串
Aug 26 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
Aug 25 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 数组排序方法总结 推荐收藏
2010/06/30 PHP
javascript之学会吝啬 精简代码
2010/04/25 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
js DOM的事件常见操作实例详解
2019/12/16 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
Python通过select实现异步IO的方法
2015/06/04 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
python如何为被装饰的函数保留元数据
2018/03/21 Python
Python中logging实例讲解
2019/01/17 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
详解HTML5中ol标签的用法
2015/09/08 HTML / CSS
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
幼儿园课题实施方案
2014/05/14 职场文书
会议通知
2015/04/15 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
女方离婚起诉书
2015/05/18 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
MySQL慢查询中的commit慢和binlog中慢事务的区别
2022/06/16 MySQL