前端使用react框架,配合ts
// @ts-ignore
import CryptoJS from 'crypto-js';
const key = CryptoJS.enc.Utf8.parse('1234567812345678'); // 十六位十六进制数作为密钥
const iv = CryptoJS.enc.Utf8.parse('1234567812345678'); //十六位十六进制数作为密钥偏移量
/**
* 请求数据加密
*
* @param {any} word 数据明文
* @returns {string} ciphertext 数据密文
*/
export const encryptData = (word: any) => {
let encrypted = CryptoJS.AES.encrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
});
return encrypted.toString();
};
/**
* 返回数据解密
*
* @param {any} word 数据密文
* @returns {string} plaintext 数据明文
*/
export const decodeData = (word: any) => {
let decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
});
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
};
在请求之前加密
在响应后解密
后端使用express框架
const CryptoJS = require("crypto-js");
const key = CryptoJS.enc.Utf8.parse('1234567812345678') // 十六位十六进制数作为密钥
const iv = CryptoJS.enc.Utf8.parse("1234567812345678");//十六位十六进制数作为密钥偏移量
/**
* 请求数据加密
*
* @param {any} plaintext 数据明文
* @returns {string} ciphertext 数据密文
*/
const encryptData = (word) => {
let encrypted = CryptoJS.AES.encrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString()
};
/**
* 返回数据解密
*
* @param {any} ciphertext 数据密文
* @returns {string} plaintext 数据明文
*/
const decodeData = (word) => {
let decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
return decryptedStr.toString()
};
module.exports = { encryptData, decodeData };
在获取参数之前,进行解密
/**
* 获取传来的参数s
*/
getParameters(req) {
// console.log(decodeData(req?.fields.params));
const body = JSON.parse(decodeData(req?.fields.params) || "{}")
console.log(body);
return {
token: req?.body?.appToken || "",
body: body
}
},
在发送响应之前加密
/**
* 使用此方法返回
* @param {number} resultCode
* @param {any} resultData
* @param {string} resultMsg
* @returns
*/
returnParameters(resultCode, resultData, resultMsg) {
return encryptData(JSON.stringify({
resultCode,
resultData,
resultMsg,
}))
},