跨平台,跨.NET版本的哈希函数

Joe*_*zer 2 c# hash cross-platform hashcode

我需要一个跨平台,跨.NET版本的哈希函数.请注意,大多数\任何常规哈希可能会在不同的计算机上产生不同的结果,可能是由于操作系统上的不同设置,使用的编译器,32\64位等.

我需要的是一个全方位的C#方法,它会对一个字符串进行散列,但是当我在参与我的系统的许多机器上生成时,哈希值将是相同的.(它们都使用.NET 3.5及更高版本).

The*_*kis 7

如果性能不是问题,请尝试.NET Framework库附带的加密哈希函数之一:MD5,SHA256,RIPEMD160.如果性能是个问题,你可能会选择像MurMurHash3这样的东西.所有这些仅取决于输入.

(如果您想出于安全目的而哈希,值得注意的是,您应该只使用加密哈希函数,并且MD5旧版本的SHA具有已知的漏洞,应该避免使用.)

  • @EdoTzumer 我所知道的所有加密哈希函数*都是*平台和语言无关的。如果您获得了不同的 MD5(例如)哈希值,则仅意味着您没有提供相同的输入,或者您没有以相同的方式读取输出。语言和平台与它无关,除非在特定平台上存在实现错误,在这种情况下它不是真正的MD5。 (2认同)
  • 如果结果依赖于输入以外的任何东西,@EdoTzumer MD5/SHA/等不会是很好的算法。您可以相信正确实现的哈希算法会产生相同的结果,无论操作系统/体系结构/语言如何。请注意,它们返回一个 byte[] 数组 - 也许您看到的差异在于该数据的字符串表示形式。 (2认同)