计算Blob的MD5哈希值

fer*_*hur 7 javascript

如何计算Blob的MD5哈希并检查另一个哈希以查看它们是否已更改?

编辑:我目前正在使用CryptoJS

Qan*_*avy 8

您可以使用FileReaderAPI获取blob的内容以进行比较.如果你必须使用CryptoJS,你可以使用readAsBinaryString:

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

请注意,readAsBinaryString不推荐使用,因此如果您可以使用其他库(例如SparkMD5),则可以使用数组缓冲区:

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


Mig*_*uel 5

我知道这有点旧,但对于寻求更好和更新解决方案的人,请使用加密 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
};
Run Code Online (Sandbox Code Playgroud)