【问题标题】:How to make Java Md5 checksum of a file unique [closed]如何使文件的Java Md5校验和唯一[关闭]
【发布时间】:2015-01-09 04:36:32
【问题描述】:

我正在使用 Apache DigestUtils 获取文件的 Md5,如下所示:

public static String getMd5(File file) throws Exception
{
  FileInputStream fis = null;
  String md5 = "";

  fis = new FileInputStream(file);
  md5 = DigestUtils.md5Hex(fis)
  IOUtils.closeQuietly(fis);

  return md5;
}

这个 Md5 被用作密钥。我正在检查唯一性(因为可能发生冲突),但是,如果它不是唯一的,我该如何使其唯一?

提前致谢!

【问题讨论】:

标签: java unique md5sum


【解决方案1】:

实际上,您无法做任何事情来使散列函数唯一(很明显,因为它将大数据映射到小数据)。对于 MD5,对于合理数量的文件,这些冲突不会偶然发生,但是想要破坏您的程序的人可以构造具有相同 MD5 哈希的文件(例如参见 http://www.mathstat.dal.ca/~selinger/md5collision/)。如果您想避免这种情况,我建议您使用被认为更安全的哈希函数,例如 SHA-256。如果您确实必须处理具有冲突的哈希函数,则使用此哈希作为键的数据结构需要处理这种情况的机制(例如二级哈希或使用列表来存储具有相同哈希的项目)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 2014-06-21
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多