用cryptojs加密Arraybuffer

时间:2018-07-01 21:21:06

标签: javascript cryptojs

我尝试使用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仅一步之遥

0 个答案:

没有答案