无论是开发原生的APP还是webapp还是PC端的软件,只要是前后端分离的模式,就避免不了调用后端提供的接口来进行业务交互。网页或者app,只要抓下包就可以清楚的知道这个请求获取到的数据,这样的接口很容易造成数据泄露,爬虫工程师要抓你的数据简直轻而易举。
因为之前公司的接口没有进行加密处理,导致数据泄露,现被要求项目所有的交互与响应都变为密文。如下图实现效果。
代码
- 安装crypto-js
npm install crypto-js
- 在根目录下的src创建util文件夹、文件夹下aes.js与request.js 。在main.js里面配置引入request.js。
// aes.js文件为AES加密解密方法,代码如下
const CryptoJS = require('crypto-js') // 引用AES源码js
const Qs = require('qs')
const key = CryptoJS.enc.Utf8.parse('xxxxxxxxxxxxxxxx') // 十六位十六进制数作为密钥
const iv = CryptoJS.enc.Utf8.parse('xxxxxxxxxxxxxxxx') // 十六位十六进制数作为密钥偏移量
// 解密方法 word 需要被加密的字符串
export function Decrypt(word) {
let encryptedHexStr = CryptoJS.enc.Hex.parse(word)
let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr)
let decrypt = CryptoJS.AES.decrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
return decryptedStr.toString()
}
// 加密方法 word 需要被加密的字符串
export <