安装
yarn add crypto-js
引入
const cryptojs = require('crypto-js');
传入字符串的直接加密形式
let aesData = {
iv: cryptojs.enc.Utf8.parse('xxxx-xxxxx-xxxxx'),
mode: cryptojs.mode.CBC,
padding: cryptojs.pad.Pkcs7
}
/**
* 加密
*/
export const encrypt = ({key, value}: {key: string, value: string}) => {
const encrypted = cryptojs.AES.encrypt(value, key, aesData)
// return encrypted.toString(cryptojs.enc.Base64);
return encrypted.toString()
}
/**
* 解密
*/
export const decrypt = ({value, key} : {value: string, key: string}) => {
const encryptedHexStr = cryptojs.enc.Base64.parse(value);
const srcs = cryptojs.enc.Base64.stringify(encryptedHexStr);
const decrypt = cryptojs.AES.decrypt(srcs, key, aesData);
const decryptedStr = decrypt.toString(cryptojs.enc.Utf8);
return decryptedStr
}
转utf8的加密形式
/**
* 加密
*/
export const encrypt = ({key, value}: {key: string, value: string}) => {
let keyStr = CryptoJS.enc.Utf8.parse(key);
let srcs = CryptoJS.enc.Utf8.parse(value);
let encrypted = CryptoJS.AES.encrypt(srcs, keyStr, aesData);
return encrypted.toString();
}
/**
* 解密
*/
export const decrypt = ({value, key} : {value: string, key: string}) => {
var keyStr = CryptoJS.enc.Utf8.parse(key);
var decrypt = CryptoJS.AES.decrypt(value, keyStr, aesData);
return decrypt.toString(CryptoJS.enc.Utf8);
}
注:在加解密中,我们需要配合后端一起去调整加解密的形式,否则我们前端调整好了,在实际接口调用中并不适用,除非你走了狗屎,查到的加解密使用博客和后端查的是同一个。
参考:
维维ww博客园
AES在线加解密测试
node官网