我目前正在计算Hasher.js节点中opensubtitles-client的文件哈希值。我不认为这是一个md5哈希,我相信它是OpenSubtitles的custom algorithm。
使用Hasher.js,按照我使用的文件路径计算文件的哈希值:
require("Hasher.js").getHash(file).done(function(hash){
fileHash = hash; // this is the file hash
});
(其中“file”是文件路径)
这适用于完全下载的视频文件(我认为即使是下载量至少为60-70%的文件)。
如果文件少于60%可用,它总是获得相同的哈希值(虽然这不是正确的哈希),并且在(可能)60%之后总是得到正确的哈希值。
是否有我遗漏的东西,是否有任何node-webkit,node.js或纯javascript实现可以始终为部分下载的文件正确计算哈希值?
或者这是从部分文件计算哈希值的正常限制吗?如果是这样,为什么它总是返回相同的2个哈希值(错误的一个和正确的哈希值)?直接获取正确的哈希真正需要多少文件?
答案 0 :(得分:1)
来自http://trac.opensubtitles.org/projects/opensubtitles/wiki/HashSourceCodes:
哈希代码基于Media Player Classic。用自然语言表示 计算:第一个和最后一个64k的大小+ 64位chksum(即使 它们重叠,因为文件小于128k)。
这意味着除非您下载了文件的第一个和最后一个64kb,否则很可能无法获得正确的opensubtitles哈希值。