javascript - 使用 JavaScript 计算本地 html5 视频文件的 SHA-1 校验和

标签 javascript typescript hash

当我的本地存储上的视频(假设它当前位于 file:///home/user/video.m4v)通过将其拖到 Chrome 中的新标签页中打开时,如何我可以使用 JavaScript 计算文件的 SHA-1 校验和吗?

<小时/>

目的:
我计划编写一个 Chrome 扩展,它将计算出的视频校验和(扩展名与模式匹配的文件)存储为 localStorage 对象,以便在选项卡关闭时保存视频的播放位置,然后在再次加载文件时恢复它,即使视频的位置或文件名发生更改。

最佳答案

为此您需要一个加密库。众所周知的一个是 Google CryptoJS .

我发现这是您任务的具体示例:https://gist.github.com/npcode/11282867

包含 crypto-js 源之后:

function sha1sum() {
    var oFile = document.getElementById('uploadFile').files[0];
    var sha1 = CryptoJS.algo.SHA1.create();
    var read = 0;
    var unit = 1024 * 1024;
    var blob;
    var reader = new FileReader();
    reader.readAsArrayBuffer(oFile.slice(read, read + unit));
    reader.onload = function(e) {
        var bytes = CryptoJS.lib.WordArray.create(e.target.result);
        sha1.update(bytes);
        read += unit;
        if (read < oFile.size) {
            blob = oFile.slice(read, read + unit);
            reader.readAsArrayBuffer(blob);
        } else {
            var hash = sha1.finalize();
            console.log(hash.toString(CryptoJS.enc.Hex)); // print the result
        }
    }
}
<小时/>

我不建议计算整个视频文件的哈希值,因为根据文件大小,它可能会非常消耗资源。也许您可以只使用元信息或再次重新考虑文件名和文件路径?

关于javascript - 使用 JavaScript 计算本地 html5 视频文件的 SHA-1 校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36736839/

相关文章:

javascript - SVG路径绘制和删除动画

javascript - 如何使用 flask [使用 flask 示例] 将 javascript 数组传递给 python 脚本

javascript - 如何为 AngularJS $q 和 $http 添加 Typescript 类型?

php - 如何在 postgres 中使用 pgcrypto 来散列密码

Java NIO 与非 NIO 性能对比

javascript - 通过添加 html 标签重新格式化文本

reactjs - Typescript 3.6 中的默认类型参数和默认参数

Javascript - 对象构造和利用 - 深入理解

arrays - 复制数组哈希的前 N ​​个键和值

javascript - .ejs 模板中图像的 Webpack 文件/图像加载器