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