使用 JavaScript 计算 Blob 的哈希值
Calculate the hash of Blob using JavaScript
我想比较两个Blob
,看看它们之间是否有变化。
一种方法是计算 blob 的哈希值,然后比较它们,例如:
hash(firstBlob) === hash(secondBlob)
如何计算 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
};
相关文章:
- 在Javascript中实现对哈希值的暴力攻击
- 用户单击带有哈希值的链接以访问该页面,如果禁用Javascript会发生什么情况
- 要发送到控制器的 HREF 链接中的哈希值
- 使用 JavaScript 计算 Blob 的哈希值
- JavaScript 文件哈希值与文件的一部分一起生成
- JavaScript 隔离哈希值
- JavaScript 获取以前的哈希值
- 设置使用 window.open() 打开的空白页的哈希值
- Chrome 不返回哈希值
- Javascript 使用哈希值重新加载页面
- 为什么从其他网络返回会保留最后一个哈希值,同时显示第一个哈希值的内容
- 来自 Javascript 和 PHP 的不同哈希值
- 使用Javascript从url中获取空哈希值
- 如何使用JS重定向到具有哈希值的引用URL
- 单击一页滚动菜单时更改URL哈希值
- 是否可以在Mustache中基于哈希值切换模板部分
- 哈希值和后退/下一步按钮
- javascript哈希值验证
- 如何将哈希值转换为数组
- 如何获得新的哈希值的URL没有页面重新加载