как преобразовать строку UTF-8 в строку в кодировке Latin1 с помощью javascript?
Вот что я пытаюсь сделать:
- Я получаю файл, разбиваю его на куски, читая как arraybuffer
- затем я анализирую буфер массива как строку
и передать его в cryptoJS для вычисления хэша, используя следующий код:
cryptosha256 = CryptoJS.algo.SHA256.create(); cryptosha256.update(text); hash = cryptosha256.finalize();
Все это хорошо работает для текстового файла. У меня возникают проблемы при использовании кода для хеширования нетекстовых файлов (файлы изображений / .wmv). Я видел в другом блоге, и там автор CryptoJS требует, чтобы байты отправлялись в формате Latin1 вместо UTF-8, и здесь я застрял.
Не уверен, как я могу сгенерировать байты (или строки) с использованием формата Latin1 из буфера массива в javascript?
$('#btnHash').click(function () {
var fr = new FileReader(),
file = document.getElementById("fileName").files[0];
fr.onload = function (e) {
calcHash(e.target.result, file);
};
fr.readAsArrayBuffer(file);
});
function calcHash(dataArray, file) {
cryptosha256 = CryptoJS.algo.SHA256.create();
text = CryptoJS.enc.Latin1.parse(dataArray);
cryptosha256.update(text);
hash = cryptosha256.finalize();
}
evt.target.result
содержит правильное значение? Обновите свой вопрос, добавив в него весь фрагмент кода. - person nwellnhof   schedule 25.11.2015readAsBinaryString
. Это все еще дает мне неопределенное значение `` хеш-код '' ... - person learnedOne   schedule 25.11.2015CryptoJS.enc.Latin1.parse(evt.target.result)
для получения правильного хэша SHA1, наконец, сработало для меня. Вроде при чтении двоичных данных нужен синтаксический анализ Latin1. - person Matt Welke   schedule 08.09.2019