首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HashAlgorithm实现

HashAlgorithm实现
EN

Stack Overflow用户
提问于 2011-01-13 15:01:57
回答 4查看 1K关注 0票数 3

我需要一个散列函数来检查某些文件版本(基本上,检查客户端文件是否与服务器端文件相同)。

我的问题是,在HashAlgorithm库中有六个.net实现,我有点迷路了。

  • System.Security.Cryptography.KeyedHashAlgorithm
  • System.Security.Cryptography.MD5
  • System.Security.Cryptography.RIPEMD160
  • System.Security.Cryptography.SHA1
  • System.Security.Cryptography.SHA256
  • System.Security.Cryptography.SHA384
  • System.Security.Cryptography.SHA512

我正在寻找一个快速算法,相对较短的输出大小。这里并不是真正的安全问题。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-13 15:04:47

因为这不是安全问题,所以MD5可能会满足您的目的。这是相当标准的文件内容散列。

票数 4
EN

Stack Overflow用户

发布于 2011-01-13 15:04:16

综上所述,MD5是最简单和最快的。

顺便说一下。对于您所描述的问题,您不需要加密哈希函数,任何哈希函数都可以。因此,您可以使用校验和,例如CRC32 (或更快的校验和- Adler32)。

票数 2
EN

Stack Overflow用户

发布于 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倍)。

如果您需要一个较短的输出,您可以简单地截断。这从机械上降低了安全性,所以只有在使用散列函数与安全性无关的情况下,才应该这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4681462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档