Node-Webkit - 计算部分下载文件的哈希[opensubtitles]

时间:2015-02-20 18:11:17

标签: javascript node.js hash node-webkit

我目前正在计算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个哈希值(错误的一个和正确的哈希值)?直接获取正确的哈希真正需要多少文件?

1 个答案:

答案 0 :(得分:1)

来自http://trac.opensubtitles.org/projects/opensubtitles/wiki/HashSourceCodes

  

哈希代码基于Media Player Classic。用自然语言表示   计算:第一个和最后一个64k的大小+ 64位chksum(即使   它们重叠,因为文件小于128k)。

这意味着除非您下载了文件的第一个和最后一个64kb,否则很可能无法获得正确的opensubtitles哈希值。