【发布时间】:2010-10-26 03:06:12
【问题描述】:
我正在为搜索系统开发一个后端应用程序。搜索系统将文件复制到一个临时目录并给它们随机命名。然后它将临时文件的名称传递给我的应用程序。我的应用程序必须在有限的时间内处理每个文件,否则它会被关闭——这是一种类似看门狗的安全措施。处理文件可能需要很长时间,因此我需要设计能够处理这种情况的应用程序。如果我的应用程序在下次搜索系统想要索引同一个文件时关闭,它可能会给它一个不同的临时名称。
显而易见的解决方案是在搜索系统和后端之间提供一个中间层。它将请求排队到后端并等待结果到达。如果请求在中间层超时 - 没问题,后端将继续工作,只有中间层重新启动,当搜索系统稍后重复请求时,它可以从后端检索结果。
问题是如何识别文件。他们的名字随机变化。我打算使用像 MD5 这样的散列函数来散列文件内容。我很清楚birthday paradox 并使用链接文章中的估计来计算概率。如果我假设我的文件不超过 100,000 个,则两个文件具有相同 MD5(128 位)的概率约为 1,47x10-29。
我应该关心这种冲突概率还是只是假设相等的哈希值意味着相等的文件内容?
【问题讨论】:
-
这是文件名内容的哈希值吗?
-
内容经过哈希处理。散列文件名没有意义 - 它们随机变化。
-
如果您担心冲突,请同时考虑文件大小和哈希值。
标签: language-agnostic md5 probability estimation