Хэш файла (Crypto-JS): тот же результат в Chrome и Firefox / другой результат в Safari - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь создать хэш файла через Crypto-JS.

Идея состоит в том, чтобы создать хэш первых байтов (т. Е. От 10 до 100).

Результат в Safari (последний) не такой, как в Chrome и Firefox (последний): есть идеи о том, что не так в Safari?

JSfiddle

Хеш-функция

const hashthefile = (filetoHash) => {
    return new Promise((resolve, reject) => {

        var start = 10;
        var stop = 100;

        // set reading operations through the FileReader API
        var reader = new FileReader();
        reader.onloadend = function(event) {
            // when the entire read request has been completed
            if (event.target.readyState == FileReader.DONE) {
                var data = event.target.result;
                var encrypted = CryptoJS.SHA256(data).toString();
                resolve(encrypted);
            }
        }
        // handle error
        reader.onerror = function(event) {
            reject('reading error')
        };
        // slice the file according to first and last bytes defined
        // complete API there: https://developer.mozilla.org/en-US/docs/Web/API/Blob/slice
        var blob = filetoHash.slice(start, stop + 2);
        // launch the file sliced reading as a base64 encoded string
        reader.readAsDataURL(blob);
    });
}

1 Ответ

0 голосов
/ 21 октября 2018

Я думаю, что выясняю, как создать согласованный хэш в Chrome, Firefox и Safari :

  • вместо readAsDataURL
  • использовать readAsArrayBuffer

Открыт для большего количества советов и точности более мудрых кодеров (все еще не знаю, почему использование readAsDataURL приводит к специфичным для Safari результатам).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...