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