首页 > 解决方案 > 使用 CryptoJS AES 加密 javascript 解密具有文本和图像内容的加密 pdf 文件

问题描述

尝试使用 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);
})
}

标签: javascriptpdfcryptojs

解决方案


推荐阅读