【发布时间】:2010-10-29 06:50:44
【问题描述】:
我正在处理一个 .NET 3.5 项目,我需要一个 32 位哈希值。 .NET Cryptography 类中似乎没有任何方法返回 32 位散列(MD5 是 128 位,SHA1 是 160 位等)。我实现了一个 CRC32 类,但我发现已经存在的 SHA1 和 MD5 哈希函数要快得多。
如果我使用 SHA1 散列函数并只是断开前 32 位存储为我的散列值,会不会有任何问题(即增加冲突的机会)?
【问题讨论】:
-
你在做什么不能存储整个 20 个字符的 SHA-1 哈希?此外,CRC32 不是哈希,它是一种传输错误检测机制,所以如果您需要错误检测,哈希并不是真正的方法。
-
选择 4 字节散列是为了节省空间。哈希将用于对来自监控设备的数据块进行校验和,可能有数十亿个。我们会看到,也许存储整个东西不会成为问题。你说了一些有趣的话。 “传输错误检测机制”和哈希之间究竟有什么区别?加密强度(这个特定的应用程序不需要它)?
-
无耻自插:cmdhashgen支持CRC32,是从HashAlgorithm派生出来的,所以可以和其他的一样使用,查看Crc32.cs:cmdtools.codeplex.com
-
我想说这只是我一直在寻找的问题,但没有找到。我对 SO 搜索从来没有任何运气。我有更好的运气输入标题,标签到问题区域,并查看弹出的建议。如果我找到我需要的,我会取消。
标签: .net hash cryptography