@gifon

Как сгенерировать хеш?

Мне нужно получить md5 из файла
как в (они генерируют одинаковый хеш)
https://emn178.github.io/online-tools/md5_checksum.html
onlinemd5.com
Однако у моего варианта хеш почему-то другой
<input id="upload" type=file onchange="handleFileSelect(event)">
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
<script>
	function handleFileSelect(e) {
		let hash = CryptoJS.MD5(CryptoJS.enc.Latin1.parse(e.target.files[0])).toString(
			CryptoJS.enc.Hex
		);
		console.log(hash)
	}
</script>

Как это исправить?
  • Вопрос задан
  • 439 просмотров
Пригласить эксперта
Ответы на вопрос 1
@GrayHorse
const input = document.createElement("input");
input.type = "file";
document.body.append(input);
input.addEventListener("change", async event => {
    const file = input.files[0];
    const ab = await file.arrayBuffer();
    const wa = CryptoJS.lib.WordArray.create(ab);
    const hash = CryptoJS.MD5(wa);
    console.log(hash.toString());
});


Лучше использовать emn178/js-md5, работает раз в 7 быстрее.

Файл, к слову, можно читать по частям и "прогрессивно" (инкрементально) вычислять хеш.
(CryptoJS.algo.MD5.create() и методы update и finalize)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы