小编典典

Java和哈希算法比较文件

java

我必须对指纹文件进行匹配才能匹配双峰。在2013年,对Java有何建议?我是否还应该比较文件大小,或者这是不必要的检查?

误报的可能性应该非常接近0

编辑:很多答案,谢谢。如今备份软件的标准是什么?SHA-256?更高?我猜md5不合适吗?


阅读 237

收藏
2020-11-16

共1个答案

小编典典

如果假阳性的概率必须 为零 ,而不是“比闪电击中的概率低”,则完全不能使用哈希算法;您必须逐字节比较文件。

值得一提的是,如果您可以使用第三方库,则可以使用Guava使用单行代码逐字节比较两个文件

Files.asByteSource(file1).contentEquals(Files.asByteSource(file2));

它负责打开和关闭文件以及比较的细节。

如果您愿意接受比闪电击中可能性小的误报,那么您可以

Files.hash(file, Hashing.sha1()); // or md5(), or sha256(), or...

它返回一个HashCode,然后您就可以测试它是否与另一个文件的哈希值相等。(该版本还处理了MessageDigest,正确打开和关闭文件等的混乱情况。)

2020-11-16