簡體   English   中英

文件哈希(Crypto-JS):Chrome和Firefox中的結果相同/ Safari中的結果不同

[英]File hash (Crypto-JS): same result in Chrome & Firefox / different result in Safari

我正在嘗試通過Crypto-JS對文件進行哈希處理。

這個想法是對第一個字節進行哈希處理(即從10100 )。

結果在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);
    });
}

我想我想出了如何在Chrome,Firefox 和Safari之間保持一致的哈希值:

  • 而不是readAsDataURL
  • 使用readAsArrayBuffer

對明智的編碼器提出更多建議和精確度(仍然不知道為什么使用readAsDataURL產生特定於Safari的結果)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM