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