Node-Webkit – 计算部分下载文件的散列

我目前正在计算来自opensubtitles-client节点的Hasher.js文件的哈希值。 我不认为这是一个MD5散列,我相信这是一个来自OpenSubtitles的自定义algorithm 。

使用Hasher.js,通过文件path来计算文件的散列,我会使用:

require("Hasher.js").getHash(file).done(function(hash){ fileHash = hash; // this is the file hash }); 

(其中“文件”是文件path)

这适用于完全下载的video文件(我认为即使是至less下载60-70%的文件)。

如果less于60%的文件是可用的,它总是得到相同的散列(尽pipe这不是正确的散列),并且在(可能)60%之后它总是得到正确的散列。

有什么我错过了,有没有任何节点的WebKit,Node.js或纯JavaScript实现,总是可以计算正确的部分下载文件的哈希?

或者这是从部分文件计算散列的正常限制? 如果是这样,为什么总是返回相同的2个哈希(错误的和正确的)? 多less文件真的需要直接得到正确的散列?

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

散列码基于Media Player Classic。 在自然语言中,它会计算:第一个和最后一个64k的大小+ 64位chksum(即使它们重叠,因为文件小于128k)。

这意味着,除非你已经下载了文件的第一个和最后一个64kb,你很可能不会得到正确的opensubtitles散列。