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

时间:2016-04-20 07:33:27

标签: javascript html5 video sha

当我的本地存储空间中的视频说它当前位于file:///home/user/video.m4v时 - 通过将其拖动到Chrome中的新标签页来打开,我该如何计算SHA-使用JavaScript的文件的1校验和?

目的:
我打算编写Chrome扩展程序,将计算出的视频校验和(扩展名与模式匹配的文件)存储为localStorage对象,以便在关闭标签时保存视频的播放位置,然后在再次加载文件时将其恢复,即使视频的位置或文件名已更改。

1 个答案:

答案 0 :(得分:2)

你需要一个加密库。众所周知的是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
        }
    }
}

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