2021-06-28 12:40:11
在鸿蒙系统中使用CryptoJS库进行AES加密时,需通过解析密钥和IV、选择加密模式及补齐方式等步骤完成,具体操作如下:
1. 安装CryptoJS库参数准备:将密钥(key)和初始化向量(iv)从字符串解析为WordArray对象。
const key = "0ada0f8609947992";const iv = "0ada0f8609947992";const info = "heihei"; // 待加密字符串const keyParse = CryptoJS.enc.Utf8.parse(key);const ivParse = CryptoJS.enc.Utf8.parse(iv);执行加密:生成Base64或Hex格式的密文。
Base64格式:
const aesBase64 = CryptoJS.AES.encrypt(info, keyParse, { iv: ivParse,}).toString();// 输出示例:GFFC7wEfHgO0UzaDKVnZaw==Hex格式:通过ciphertext.toString()获取:
const aesHex = CryptoJS.AES.encrypt(info, keyParse, { iv: ivParse,}).ciphertext.toString();// 输出示例:185142EF011F1E03B45336832959D96BHex转Base64:若密文为Hex格式,需先转换为Base64。
let encryptedHex = "185142EF011F1E03B45336832959D96B";encryptedHex = encryptedHex.replace(/n*$/g, '').replace(/n/g, ''); // 清理换行符const hexParsed = CryptoJS.enc.Hex.parse(encryptedHex);const base64 = CryptoJS.enc.Base64.stringify(hexParsed);执行解密:使用相同的密钥和IV解密Base64密文。
const keyParse = CryptoJS.enc.Utf8.parse(key);const ivParse = CryptoJS.enc.Utf8.parse(iv);const decrypted = CryptoJS.AES.decrypt(base64, keyParse, { iv: ivParse,});const result = CryptoJS.enc.Utf8.stringify(decrypted); // 输出:heihei支持模式:
CBC(默认):需提供iv。
CFB/CTR/OFB:流加密模式,无需补齐。
ECB:无需iv,但安全性较低。
示例(CFB模式 + AnsiX923补齐):
const encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase", { mode: CryptoJS.mode.CFB, padding: CryptoJS.pad.AnsiX923});支持补齐方式:
Pkcs7(默认):标准PKCS#7补齐。
Iso97971/AnsiX923/Iso10126:特定标准补齐。
ZeroPadding/NoPadding:零补齐或无补齐。
通过以上步骤,可高效完成鸿蒙系统中AES加密的配置与操作,同时支持灵活的模式和补齐方式调整。