直接上代码
AES256 加密
/*
功能: 加密
参数:
data: 16进制字符串
iv: 16进制初始向量, 一般为8字节
key: 16进制字符串, AES256 对应 32 字节
*/
const encrypt = (data, iv, key) => {
//将16字符串,转为js word
let hexData = CryptoJS.enc.Hex.parse(data);
let hexKey = CryptoJS.enc.Hex.parse(key);
let hexIv = CryptoJS.enc.Hex.parse(iv);
let encrypted = CryptoJS.AES.encrypt(hexData, hexKey, {
iv: hexIv,
mode: CryptoJS.mode.OFB,
padding: CryptoJS.pad.NoPadding,
});
//返回16进制字符串
return encrypted.ciphertext.toString().toUpperCase();
}
/*
功能: 解密
data: 需要解密 16进制字符串
iv: 16进制初始向量, 一般为8字节
key: 16进制字符串, AES256 对应 32 字节
*/
const decrypt = (data, iv, key) => {
//将16字符串,转为js word
let hexData = CryptoJS.enc.Hex.parse(data);
let hexKey = CryptoJS.enc.Hex.parse(key);
let hexIv = CryptoJS.enc.Hex.parse(iv);
let decrypted = CryptoJS.AES.decrypt(
{
ciphertext: hexData,
}
, hexKey, {
iv: hexIv,
mode: CryptoJS.mode.OFB,
padding: CryptoJS.pad.NoPadding,
});
//返回16进制字符串
return decrypted.toString();
}
/**
* ┏┓ ┏┓+ +
* ┏┛┻━━━┛┻┓ + +
* ┃ ┃
* ┃ ━ ┃ ++ + + +
* ████━████ ┃+
* ┃ ┃ +
* ┃ ┻ ┃
* ┃ ┃ + +
* ┗━┓ ┏━┛
* ┃ ┃
* ┃ ┃ + + + +
* ┃ ┃ Code is far away from bug with the animal protecting
* ┃ ┃ + 神兽保佑,代码无bug
* ┃ ┃
* ┃ ┃ +
* ┃ ┗━━━┓ + +
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛ + + + +
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛+ + + +
*
* @author chenxi
* @date 2022年3月14日15:19:19
*/