当我的本地存储上的视频(假设它当前位于 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/