【发布时间】:2013-05-28 16:13:14
【问题描述】:
在我们的应用程序中,我们让用户通过它生成和发送各种各样的文档。其中一些将始终是唯一的,但其中很大一部分将是静态的。我们使用 FileStream 将文件存储在 SQL 2008 DB 中以存储实际数据。我正在寻找一种方法来检测文件何时已存储,因此我不存储重复文件。
我正在考虑生成一个散列,使用 MD5 并将该散列用作 SQL 数据库的键。我害怕的是发生碰撞的可能性。
我的一些问题是:
1:在哈希上发生冲突的可能性是多少?我应该将唯一键视为文件名、文件大小和哈希的组合吗?
2:你会将生成的哈希存储在数据库中吗?我们应该将它存储为二进制字段吗?
【问题讨论】:
-
存储一个哈希,如果匹配,验证文件的内容。您只需要检查插入和更新,并且匹配应该很少见。 (查看 Wikipedia 或其他资源,了解各种哈希算法发生冲突的可能性。)只是不要创建哈希列
unique。
标签: c# sql-server md5