【发布时间】:2013-06-26 05:30:58
【问题描述】:
我正在尝试找到可能比 SHA256 更快的东西。我有超过 10 亿条记录需要散列并验证它们是否唯一。我目前正在通过 MD5 运行它,它看起来非常快,然后通过 sha256 来避免碰撞。按这个顺序运行它们似乎给了我一点性能提升,但我仍然需要它更快。我正在寻找在 c# 中完成的一些哈希的名称或示例或一些伪代码,以便我可以在 c# 中重新创建它。
【问题讨论】:
-
如果记录都非常正常,我会说 MD5 适合您的需求。您只会从专门制作的奇怪输入中获得碰撞,而不是来自非常相似但略有不同的记录。
-
I am currently running it through an MD5 which seems pretty fast then through the sha256 to avoid collisions只是为了确定,您正在散列到 MD5,那么如果两条记录具有相同的散列,您检查 sha256 以避免冲突?如果是这样,您可以尝试用 CRC 替换 MD5,这应该会更快(但显然会产生更多冲突) -
我只是让它们同时运行,以尝试进一步减少冲突
-
如果 MD5 值发生冲突,肯定会导致 SHA-256 输出发生冲突吗?还是我误解了您如何使用 SHA-256?
-
SHA-2(MD5(x))是个坏主意。在您的情况下,与MD5(x)相比没有优势。
标签: c# hash cryptography md5 sha256