我需要计算大文件的SHA或MD5哈希值。我需要做的就是这个,我举个例子:
假设我有一个1GB的文件。 要计算哈希,我想将这个文件分成4个256MB的部分(我想把它分成更小的部分)。
1)开始计算第一部分的哈希值
2)得到第一部分的输出哈希值,用第二部分输入它并计算第二部分的哈希值
3)得到2)点的输出哈希值,用第三部分输入它并计算第三部分的哈希值
4)获取3)点的输出哈希值,在第四部分的输入中给出它并计算整个文件的哈希值。
我在google上搜索了很多但我没有发现任何类似的东西。我通过使用方法更新读取MessageDigest我可以读取文件块直到整个文件加载然后计算哈希但我没有&# 39; t了解当我加载一个块时,它还会计算它的散列(因此在我的情况下会很好)或者它只是一个加载,并且当文件完全是在末尾计算哈希值加载。
答案 0 :(得分:0)
您可能还需要查看java.security.DigestInputStream
来计算整个文件的哈希值。
如果你需要零件的中间哈希,你可能会幸运java.security.MessageDigest.clone()
;在部分克隆之后,用于哈希计算的MessageDigest实例在克隆上调用digest()
以获取部件之后的哈希值。
可以使用下一部分的字节更新原始MessageDigest实例。