我正在建立一个用户可以上传内容的网站。与往常一样,我的目标是统治世界,所以我想避免两次存储同一个文件。例如,如果用户尝试两次上传同一个文件(通过重命名或只是忘记她过去所做的事情)。
我目前的方法是让跟踪每个上传文件的数据库存储有关每个文件的以下信息:
- 文件大小(以字节为单位)
- 文件内容的MD5总和
- SHA1 文件内容总和
然后是这三列的唯一索引。使用两个散列来最小化误报的风险。
所以,我的问题是:两个大小相同的不同(“真实世界”)文件具有相同 MD5和SHA1 哈希值的概率是多少?
或者:是否有类似(非)复杂性的更智能方法?
(我知道概率可能取决于文件大小)。
谢谢!