簡體   English   中英

使用 JavaScript 計算 Blob 的哈希值

[英]Calculate the hash of Blob using JavaScript

我想比較 Blob 以查看它們是否發生了變化。 一種有效的方法是計算 blob 的哈希值,然后比較它們,例如:

hash(firstBlob) === hash(secondBlob)

我如何在 JavaScript 中完成這樣的事情:如何計算 Blob 的哈希值並檢查另一個哈希值以查看它們是否已更改?

您可以使用FileReader API 獲取 blob 的內容以進行比較。 如果你必須為此使用 CryptoJS,你可以使用readAsBinaryString

var a = new FileReader();
a.readAsBinaryString(blob);
a.onloadend = function () {
  console.log(CryptoJS.MD5(CryptoJS.enc.Latin1.parse(a.result)));
};

請注意, readAsBinaryString已棄用,因此如果您可以使用其他庫,例如SparkMD5 ,則可以改用數組緩沖區:

var a = new FileReader();
a.readAsArrayBuffer(blob);
a.onloadend = function () {
  console.log(SparkMD5.ArrayBuffer.hash(a.result));
};

我知道這有點舊,但對於尋求更好和更新解決方案的人,請使用加密 API和算法的 SHA-256 或更高變體,因為 MD5 具有可利用的缺陷。

var a = new FileReader();
a.readAsArrayBuffer(blob);
a.onloadend = function () {
  let hashPromise = crypto.subtle.digest("SHA-256", a.result);// it outputs a promise
};

暫無
暫無

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

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