- 导入 crypto-js 库;
npm install crypto-js --save-dev
-
定义密钥 key 和密钥偏移量 iv ;
-
创建一个名为 crypto 的对象;
加密实现过程
-
首先将待加密的数据转换为 CryptoJS.enc.Utf8 格式的字节序列。
-
使用相应的加密算法(如 AES、DES、Triple DES、Rabbit 或 RC4)对字节序列进行加密,使用给定的密钥、密钥偏移量;
-
将加密结果转换为字符串形式,并返回加密后的结果;
解密实现过程
-
对于每个解密函数,首先将密文转换为 CryptoJS 支持的格式;
-
使用相应的解密算法对密文进行解密,使用给定的密钥、密钥偏移量;
-
将解密结果转换为字符串形式,返回解密的结果;
-
对于哈希函数 hashSHA256 ,使用 SHA256 算法对给定的数据进行哈希计算,并将结果转换为字符串形式返回;
-
最后,将 crypto 对象作为默认导出,放入main.js中全局注册或按需导入。
import CryptoJS from 'crypto-js';
const key = CryptoJS.enc.Utf8.parse('your key'); // 密钥
const iv = CryptoJS.enc.Utf8.parse('your iv'); // 添加密钥偏移量
const crypto = {
// AES(高级加密标准)
// AES 是一种对称加密算法,被广泛应用于保护数据的机密性
// 它支持不同的密钥长度(128位、192位和256位)和多种加密模式(如 ECB、CBC 等)
// AES 加密
encryptAES(encryptData) {
const srcs = CryptoJS.enc.Utf8.parse(encryptData);
const encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv, // 使用密钥偏移量
mode: CryptoJS.mode.CBC, // 使用 CBC 模式
// 除了CBC(密码块链模式)之外
// crypto-js 库还支持:
// 1. ECB(电子密码本模式)2. CFB(密码反馈模式)3. OFB(输出反馈模式)4. CTR(计数器模式)
padding: CryptoJS.pad.Pkcs7,
});
return encrypted.toString