方法比较简单,目的也就是避免能直接看到明文,所以加密;
有加密自然有解密,后端去解密,只要求前后端使用的方式一直即可,例如约定好key,偏移量,以及mode模式,下面我们具体来看一下。
1.用到的插件
react项目
npm i --save js-md5
npm i --save @types/js-md5
npm i --save-dev crypto-js
npm i --save-dev @types/crypto-js
2.使用
const encryptByAES = useCallback((pwd: string, user: string) => {
let AESKey = md5(user);
let key = CryptoJS.enc.Utf8.parse(AESKey);
let iv = CryptoJS.enc.Utf8.parse(AESKey.substr(0, 16)); // 偏移量:规定的是key前15位
let srcs = CryptoJS.enc.Utf8.parse(pwd);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}, [])
注意encrypted.ciphertext 拿到加密后的密码,结果出现了乱码,所以要试用base64再去转一下 ,具体步骤如上面代码(本身AESKey和密匙和偏移量没什么直接关系)。