Java中大型文件的MD5或SHA哈希

时间:2015-09-24 11:15:54

标签: java hash md5 sha

我需要计算大文件的SHA或MD5哈希值。我需要做的就是这个,我举个例子:

假设我有一个1GB的文件。 要计算哈希,我想将这个文件分成4个256MB的部分(我想把它分成更小的部分)。

1)开始计算第一部分的哈希值

2)得到第一部分的输出哈希值,用第二部分输入它并计算第二部分的哈希值

3)得到2)点的输出哈希值,用第三部分输入它并计算第三部分的哈希值

4)获取3)点的输出哈希值,在第四部分的输入中给出它并计算整个文件的哈希值。

我在google上搜索了很多但我没有发现任何类似的东西。我通过使用方法更新读取MessageDigest我可以读取文件块直到整个文件加载然后计算哈希但我没有&# 39; t了解当我加载一个块时,它还会计算它的散列(因此在我的情况下会很好)或者它只是一个加载,并且当文件完全是在末尾计算哈希值加载。

1 个答案:

答案 0 :(得分:0)

您可能还需要查看java.security.DigestInputStream来计算整个文件的哈希值。

如果你需要零件的中间哈希,你可能会幸运java.security.MessageDigest.clone();在部分克隆之后,用于哈希计算的MessageDigest实例在克隆上调用digest()以获取部件之后的哈希值。

可以使用下一部分的字节更新原始MessageDigest实例。