计算Blob的MD5哈希值

时间:2013-12-17 00:02:14

标签: javascript

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

编辑:我目前正在使用CryptoJS

2 个答案:

答案 0 :(得分:5)

您可以使用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));
};

答案 1 :(得分:1)

我知道这有点陈旧,但是对于寻求更好和更新解决方案的用户,请使用Crypto API和SHA-256或更高版本的算法,因为MD5具有exploitable缺陷。 / p>

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