AES前后端加解密
前端
安装依赖
1  | npm install --save crypto-js  | 
工具类
1  | const CryptoJS = require("crypto-js");  | 
加解密测试
1  | let key = "psvmc.cn";  | 
结果
encrypt_str: U2FsdGVkX1/QM9zoNjeuJ4AHYhjME01+XQLEOGkO3ns=
decrypt_str: 123456
后端
安装依赖
1  | npm install --save crypto-js  | 
工具类
zaes_utils.js
1  | const CryptoJS = require("crypto-js");  | 
加解密测试
1  | const { aes } = require("@/assets/utils/zaes_utils");  | 
结果
encrypt_str: f77e3331d381f6c2b6c33d823c5f7cdb
decrypt_str: 123456
注意
这里前后端加密后的字符串是不一样的,不用担心,他们都可以解密回原来的字符串,经过测试发现,同样的字符串每次加密都会生成不一样的字符串,但是都可以解密回原来的字符串。
前端工具类
这个示例中我们自定义一下加密Key
1  | const CryptoJS = require("crypto-js");  | 
项目对接
前端
设置请求拦截器
1  | const http = axios.create({  | 
后端
我这里后端使用的是Koa框架,新定义了一个属性保存了加密后的请求体
1  | app.use(cors());  | 
注意
解密代码要放在
bodyParser()之后,Controller之前
后端使用Java
前端库地址:crypto-js
安装依赖
1  | npm install --save crypto-js  | 
或者下载后引用
1  | <script src="./js/crypto-js.js"></script>  | 
使用CBC模式
前端
1  | // 字符串转hex  | 
结果
密钥: 0123456789ABCDEF
偏移量: 0123456789101112
原字符串: Hello World
加密: 4b20efdf7aceb95c099b7df542673256
解密: Hello World
Java后端
1  | import java.io.UnsupportedEncodingException;  | 
结果
密钥:0123456789ABCDEF
偏移量:0123456789101112
原字符串:Hello World
加密:4b20efdf7aceb95c099b7df542673256
解密:Hello World
使用ECB模式
前端
1  | // 字符串转hex  | 
结果
密钥: 0123456789ABCDEF
原字符串: Hello World
加密: 21f41dde54d0c9703c730fd14ce47cfe
解密: Hello World
Java后端
1  | import java.io.UnsupportedEncodingException;  | 
结果
密钥:0123456789ABCDEF
原字符串:Hello World
加密:21f41dde54d0c9703c730fd14ce47cfe
解密:Hello World