如果假阳性的概率必须 为零 ,而不是“比闪电击中的概率低”,则完全不能使用哈希算法;您必须逐字节比较文件。
值得一提的是,如果您可以使用第三方库,则可以使用Guava使用单行代码逐字节比较两个文件
@H_301_7@Files.asByteSource(file1).contentEquals(Files.asByteSource(file2));
如果您愿意接受比闪电击中可能性小的误报,那么您可以
@H_301_7@Files.hash(file, Hashing.sha1()); // or md5(), or sha256(), or...
它返回一个@H_301_7@HashCode,然后您就可以测试它是否与另一个文件的哈希值相等。(该版本还处理了@H_301_7@MessageDigest,正确打开和关闭文件等的混乱情况。)