Я использую Криптико для обработки 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.info("added", file.name);
// console.info(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.info(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));
});
});
@Ouroborus, почему в данном случае?
Похоже, у вас есть два асинхронных действия, $.ajax и zip.generateAsync. Не очевидно, как и взаимодействуют ли они.
@Ouroborus Во-первых, нужно получить набор открытых ключей для каждого пользователя для шифрования файла. Второй асинхронный процесс — это извлечение изображения из файла и добавление его в предварительный просмотр. Я не обязан делать это таким образом, но я был уверен, что смогу его восстановить. Мне просто нужно выяснить, как правильно RSA зашифровать файл после того, как он был заархивирован из загруженного файла.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Нужен "рабочий" пример.