使用CryptoJS AES加密javascript解密具有文本和图像内容的加密pdf文件

时间:2019-06-11 12:50:27

标签: javascript pdf cryptojs

尝试使用cryptojs AES算法对具有文本和图像内容的pdf文件进行加密。解密后,解密后的内容不一样,pdf内的图像内容不同,但文本部分与预期的相同。

这是项目要求,首先加密包含文本和图像的pdf文件并发送到服务器(JAVA)。检索时,获取加密文件并解密。

在解密时预期与加密之前具有相同的文件内容。

encryptFile(file): Promise<string> {
return new Promise((resolve, reject) => {
const reader = new FileReader();

const key = CryptoJS.enc.Base64.parse('u/Gu5posvwDsXUnV5Zaq4g==');
const iv = CryptoJS.enc.Base64.parse('5D9r9ZVzEYYgha93/aUK2w==');

reader.onloadend = function (e) {
    const utf8Stringified = CryptoJS.enc.Utf8.parse(reader.result)
    const encrypted = CryptoJS.AES.encrypt(utf8Stringified, key, { iv: 
    iv,
    padding: CryptoJS.pad.Pkcs7, mode: CryptoJS.mode.CBC })
    resolve(CryptoJS.enc.Base64.stringify(encrypted.ciphertext))
};
reader.readAsText(file);
})
}

decryptFile(file): Promise<string> {
return new Promise((resolve, reject) => {
    const reader = new FileReader()

    const key = CryptoJS.enc.Base64.parse('u/Gu5posvwDsXUnV5Zaq4g==');
    const iv = CryptoJS.enc.Base64.parse('5D9r9ZVzEYYgha93/aUK2w==');

    reader.onloadend = function (e) {
    const decrypted = CryptoJS.AES.decrypt(reader.result, key, { iv: iv, 
    padding: CryptoJS.pad.Pkcs7, mode: CryptoJS.mode.CBC })
    resolve(decrypted.toString(CryptoJS.enc.Utf8))
};
reader.readAsText(file);
})
}

0 个答案:

没有答案