我尝试使用AES加密ArrayBuffer,所以先将其转换为wordArray,然后转换为字符串:
private encrypt(file: ArrayBuffer, key: string): string {
const wordArray = CryptoJS.lib.WordArray.create(file);
const str = CryptoJS.enc.Hex.stringify(wordArray);
console.log(str); //6920616d206120737472696e67
return CryptoJS.AES.encrypt(str, key).toString();
}
现在我想解密回ArrayButter,但是打印出的字符串甚至不匹配:
private decrypt(file: string, key: string) {
const decrypted = CryptoJS.AES.decrypt(file, key);
console.log(decrypted.toString()); //3639323036313664323036313230373337343732363936653637
}
我认为我搞砸了一些步骤,但不知道在哪里。
更新:我需要将字符串转换为utf才能生成字数组:
private decrypt(file: string, key: string) {
const decrypted = CryptoJS.AES.decrypt(file, key);
const str = decrypted.toString(CryptoJS.enc.Utf8);
const wordArray = CryptoJS.enc.Hex.parse(str);
}
现在我距离再次将其转换为ArrayBuffer仅一步之遥