#javascript #file #rsa #jszip
#javascript #файл #rsa #jszip
Вопрос:
Я использую Cryptico для обработки шифрования RSA для чата, но у меня возникли проблемы при попытке зашифровать zip-файл после создания. Я вижу созданный файл в консоли. Консоль показывает зашифрованную строку файла, но возвращает пустую после расшифровки в консоли.
Примечание: мой метод дешифрования корректно работает с текстом и base64
$(document).on("change", "#chatImage", function() {
var rid = $(this).closest(".chat").data("id");
var files = this.files;
var zip = new JSZip();
for (var i = 0; i < files.length; i = 1) {
var file = files[i];
zip.file(file.name, file);
console.log("added", file.name);
// console.log(file);
}
var eImgArray = {};
$.ajax({
url : ajax_object.ajax_url,
type : 'post',
data : {
action: 'get_room_member_keys',
rid : rid,
},
beforeSend: function() {
},
success: function(html) {
var pubKeys = $.parseJSON(html);
$.each( pubKeys, function( key, value ) {
var imgEncrypt = cryptico.encrypt(file, value);
var imgSrc = imgEncrypt.cipher;
eImgArray[key] = imgSrc;
});
var strImgArray = JSON.stringify(eImgArray);
$("#chatFormCont input[name=image_data]").val(strImgArray);
var foo = $("#chatFormCont input[name=image_data]").val();
// console.log(foo);
},
});
zip.generateAsync({type: "blob"}).then(function(content) {
function show_all_images(relpath, file) {
if (file.dir) {
return file.forEach(show_all_images);
}
var img = $("#chatImagePreview");
file.async("blob").then(function(blob) {
var src = window.URL.createObjectURL(blob);
img.attr("src", src);
});
}
new JSZip.loadAsync(content).then(zip => zip.forEach(show_all_images));
});
});
Комментарии:
1. Понадобится «рабочий» пример.
2. @Ouroborus почему именно в этом случае?
3. Похоже, что у вас выполняются два асинхронных действия,
$.ajax
иzip.generateAsync
. Не очевидно, как или если они взаимодействуют.4. @Ouroborus Первый — получить набор открытых ключей для каждого пользователя для шифрования файла. Вторая асинхронность заключается в том, что я извлекаю изображение из файла и добавляю его в предварительный просмотр. Мне не обязательно делать это таким образом, но я хотел убедиться, что смогу его восстановить. Мне просто нужно выяснить правильный способ RSA-шифрования файла после архивирования из загруженного файла.