javascript - 使用 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);
})
}
解决方案
推荐阅读
- cmake - 我只能用 make 构建一次
- swift - SwiftUI Mac:辅助窗口中的环境对象
- api - 视频索引器渲染项目 API 不起作用
- django - Django REST 框架 - 在序列化程序中添加深度会使 POST 数据上的外键约束失败
- r - R:在数据面板中绘制最后 N 个观察值,每天从网站更新
- c++ - 带有函数 ptr 的 BST,如何添加额外的参数?
- javascript - 使用 ReactJs 使用 UseContext 时遇到问题,我需要更改一个组件中的状态变量,并希望在另一个组件中更新状态
- compiler-construction - 为什么每个状态在`LR`解析表中最多出现一个`GOTO`列?
- python - 无法在 python 中安装包,readline (setup.py) 的错误构建轮
- python - 使用 Tensorflow 的 Dataset API 加载示例时出现类型错误