当我的本地存储空间中的视频说它当前位于file:///home/user/video.m4v
时 - 通过将其拖动到Chrome中的新标签页来打开,我该如何计算SHA-使用JavaScript的文件的1校验和?
目的:
我打算编写Chrome扩展程序,将计算出的视频校验和(扩展名与模式匹配的文件)存储为localStorage对象,以便在关闭标签时保存视频的播放位置,然后在再次加载文件时将其恢复,即使视频的位置或文件名已更改。
答案 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
}
}
}
我不建议计算整个视频文件的哈希值,因为根据文件大小,它可能非常耗费资源。也许你可以只使用元信息或重新考虑文件名和文件路径?