javascript - 如何下载加密的base64?然后解密
问题描述
我想在客户端浏览器中对图像进行加密和解密。
我已经创建了一个加密 base64 的上传图像。但是,我不知道如何下载这个加密图像(格式图像不是文本)。
之后我想上传这个加密的图像进行解密。
感谢您的提前,我很抱歉我的英语不好。
$(document).ready(function() {
$("#form-encrypt").on('submit', function(e){
e.preventDefault();
disabledButton('btn-submit-encrypt');
let filesSelected = document.getElementById("inputFileToLoad").files;
let fileExtension = filesSelected[0].name.split('.').pop()
const password = $('#password').val();
if (filesSelected.length > 0) {
let fileToLoad = filesSelected[0];
let fileReader = new FileReader();
fileReader.onload = function(fileLoadedEvent) {
let base64value = fileLoadedEvent.target.result;
let encrypt = CryptoJS.AES.encrypt(base64value, password).toString();
};
fileReader.readAsDataURL(fileToLoad);
}
});
$("#form-decrypt").on('submit', function(e){
e.preventDefault();
const ciphertext = document.querySelector('#encrypt-text').value;
const pass = document.querySelector('#password-decrypt').value;
try {
let bytes = CryptoJS.AES.decrypt(ciphertext, pass);
const originalText = bytes.toString(CryptoJS.enc.Utf8);
const preview = document.getElementById('preview');
preview.setAttribute('src', originalText);
$("#preview").show();
} catch (error) {
alert('Wrong Password, or Encrypt Text Not Right');
}
});
});
function downloadTxt(filename, data, mimeType) {
let element = document.createElement('a');
element.setAttribute('download', filename);
mimeType = mimeType || 'text/plain';
element.setAttribute('href', 'data:' + mimeType + ';charset=utf-8,' + [enter image description here][1]encodeURIComponent(data));
element.click();
}
function disabledButton(elm) {
const element = document.getElementById(elm);
element.setAttribute('disabled', true);
element.innerHTML = 'Loading..';
}
解决方案
是的,我已经知道了。
我错了,因为我在 fileReader 中加密了所有结果,你必须拆分一个 base64 值。
例子 :
数据:图像/png;base64,iVBOblablabla
用 ( , ) 分割,你得到数组 data[0] = data:image/png;base64 data[1] = iVBOblablabla
你应该只加密数据[1]
推荐阅读
- elasticsearch - elasticsearch 7嵌套聚合文本关键字错误
- python-3.x - 无法在弹性搜索中搜索带有符号的查询
- mongodb - MongoDB 并发 - 降低性能
- python - Tesseract / PYOCR 将“Z”检测为“2”
- c# - 如何使用c#在ms word段落文本中查找行
- autodesk-forge - 从链接的 Revit 转换的 SVF 中的重复对象
- javascript - 未捕获的语法错误:jquery 中的令牌无效或意外
- google-apps-script - Google App Script:如何将数据从一张纸复制并粘贴到另一张纸上?
- python - 为整个 repo 动态创建测试文件模板
- apache-spark - 为什么聚合和透视后总和不显示?