Js通过AES加密后PHP用Openssl解密的方法


Posted in Javascript onJuly 12, 2019

前言

最近遇到的几个网站在提交密码时提交的已经是密文,也就是说在网络上传输的密码是密文,这样提升了密码在网络传输中的安全性。

后端语言加解密已经有很成熟的方案了,前端的话Google之前出过一个crypto-js,为浏览器的js提供了加解密方案。今天一起来了解一下基于AES的前后端加解密流程。

Javascript

1、安装npm包 npm install crypto-js

2、加密代码

const CryptoJS = require("crypto-js");
const key = CryptoJS.enc.Latin1.parse('1234567812345678');
const iv = CryptoJS.enc.Latin1.parse('1234567812345678');
const encoded = CryptoJS.AES.encrypt('hahaha', key, {
 iv: iv,
 mode: CryptoJS.mode.CBC,
 adding: CryptoJS.pad.ZeroPadding
}).toString()
console.log('encoded', encoded)

3、解密代码

const key = CryptoJS.enc.Latin1.parse('123456781234567812345678');
const iv = CryptoJS.enc.Latin1.parse('1234567812345678');
const decoded = CryptoJS.AES.decrypt(encoded, key, {
 iv: iv,
 mode: CryptoJS.mode.CBC,
 adding: CryptoJS.pad.ZeroPadding
}).toString(CryptoJS.enc.Utf8)
console.log('decoded', decoded);

4、输出如下

encoded 6bcgYd4f4ZgNOQH/3tqMpg==
decoded hahaha

PHP

直接使用openssl解密即可,代码如下:

$encoded = '6bcgYd4f4ZgNOQH/3tqMpg==';
$key = '123456781234567812345678';
$iv = '1234567812345678';
var_dump(openssl_decrypt($encoded, 'AES-192-CBC', $key, 0,$iv));

输出结果:

string(6) "hahaha"

注意事项

1、AES加密位数跟密钥key有关, 以下是密钥位数和加密对应关系

  • 16 => AES-128
  • 24 => AES-192
  • 32 => AES-256

2、iv是初始化向量. 超过16字节或者不足16字节都会被补足16字节或者截断到16字节。由于AES是块加密,铭文被分割成固定长度的块(一般是16字节长度),所以iv也是16字节。

3、CBC是加密模式

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript 点击整页变灰的效果(可做退出效果)。
Jan 09 Javascript
Extjs学习过程中新手容易碰到的低级错误积累
Feb 11 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
Dec 18 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
JS实现跟随鼠标的链接文字提示框效果
Aug 06 Javascript
原生JavaScript编写canvas版的连连看游戏
May 29 Javascript
js继承实现方法详解
Dec 16 Javascript
JS实现最简单的冒泡排序算法
Feb 15 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
Mar 10 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
Feb 21 Javascript
Openlayers显示地理位置坐标的方法
Sep 28 Javascript
浅谈es6中的元编程
Dec 01 Javascript
django js 实现表格动态标序号的实例代码
Jul 12 #Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 #Javascript
微信小程序开发常见问题及解决方案
Jul 11 #Javascript
使用vue for时为什么要key【推荐】
Jul 11 #Javascript
利用Angular7开发一个Radio组件的全过程
Jul 11 #Javascript
vue发送websocket请求和http post请求的实例代码
Jul 11 #Javascript
微信小程序之几种常见的弹框提示信息实现详解
Jul 11 #Javascript
You might like
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
python实现排序算法
2014/02/14 Python
Python作用域用法实例详解
2016/03/15 Python
Python微信库:itchat的用法详解
2017/08/14 Python
Django如何实现内容缓存示例详解
2017/09/24 Python
Python实现学生成绩管理系统
2020/04/05 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
详解python中docx库的安装过程
2019/11/08 Python
Python for i in range ()用法详解
2020/09/18 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
为数据库创建索引都需要注意些什么
2012/07/17 面试题
Linux的主要特性
2014/10/06 面试题
平安校园建设方案
2014/05/02 职场文书
答谢会策划方案
2014/05/12 职场文书
法制宣传口号
2014/06/16 职场文书
文明城市创建标语
2014/06/16 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
晚会开幕词
2015/01/28 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
应届生简历自我评价
2015/03/11 职场文书
开学第一周总结
2015/07/16 职场文书
图文详解matlab原始处理图像几何变换
2021/07/09 Python