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