我需要一个散列函数来检查某些文件版本(基本上,检查客户端文件是否与服务器端文件相同)。
我的问题是,在HashAlgorithm库中有六个.net实现,我有点迷路了。
我正在寻找一个快速算法,相对较短的输出大小。这里并不是真正的安全问题。
谢谢!
发布于 2011-01-13 15:04:47
因为这不是安全问题,所以MD5可能会满足您的目的。这是相当标准的文件内容散列。
发布于 2011-01-13 15:04:16
综上所述,MD5是最简单和最快的。
顺便说一下。对于您所描述的问题,您不需要加密哈希函数,任何哈希函数都可以。因此,您可以使用校验和,例如CRC32 (或更快的校验和- Adler32)。
发布于 2011-01-14 12:40:23
为了表现,衡量。所有的散列函数都是“快速”的--对于某种速度的概念。在您列出的列表中,MD5是最快的,但这并不意味着另一个不够“足够快”。最慢的应该是在32位VM上有托管实现的SHA-512 (使用64位VM,SHA-512得到相当大的提升,而SHA-256则是最慢的);它仍然能够在普通PC上每秒处理大约30兆字节的数据,这最终也不是很慢。
如有疑问,请使用SHA-256。只有在实际实验中适当地证明哈希速度是应用程序的瓶颈时,才会考虑其他问题,并且您可以表明,您确实没有密码中断的散列函数的安全性问题。这是正确的顺序,因为评估性能要比评估安全性容易得多,所以首先获得良好的安全性要安全得多。在这里,除了选择MD5作为一个更快的函数之外,您还可以想象导入托管MD4实现(有一个那里):MD4甚至比MD5更坏,但也更快。和/或您可以尝试一些本机代码(在哈希函数实现上,本机代码通常比托管代码快2到4倍)。
如果您需要一个较短的输出,您可以简单地截断。这从机械上降低了安全性,所以只有在使用散列函数与安全性无关的情况下,才应该这样做。
https://stackoverflow.com/questions/4681462
复制相似问题