C# 跨平台、跨.NET版本哈希函数

C# 跨平台、跨.NET版本哈希函数,c#,hash,cross-platform,hashcode,C#,Hash,Cross Platform,Hashcode,我需要一个跨平台、跨.NET版本的哈希函数。 请注意,大多数常规哈希可能会在不同的计算机上产生不同的结果,可能是由于操作系统上的不同设置、使用的编译器、32\64位等 我需要的是一个全面的C#方法,它将散列一个字符串,但散列值在参与我的系统的许多机器上生成时将是相同的。(它们都使用.NET 3.5及以上版本)。如果性能不是问题,请尝试.NET Framework库附带的加密哈希函数之一:MD5,。如果性能是一个问题,您可能会选择类似于的选项3。所有这些都只依赖于输入 (如果您想出于安全目的进行散

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


我需要的是一个全面的C#方法,它将散列一个字符串,但散列值在参与我的系统的许多机器上生成时将是相同的。(它们都使用.NET 3.5及以上版本)。

如果性能不是问题,请尝试.NET Framework库附带的加密哈希函数之一:MD5,。如果性能是一个问题,您可能会选择类似于的选项3。所有这些都只依赖于输入


(如果您想出于安全目的进行散列,值得注意的是,您应该只使用加密散列函数,并且应该避免使用已知的漏洞。)

可能是MD5/SHA1?crc-16/crc-32?您能告诉我们您需要哈希函数的目的吗?例如,如果您需要它来散列密码,则由于salt的唯一性,每次计算都应返回不同的结果。那么,您是在寻找一个加密哈希函数,还是仅仅是一个提供字典的函数呢?中央银行保存着客户机生成的文件。在生成文件之前,请检查银行应用程序中是否存在该文件。如果存在,则表示另一个客户已经创建了该文件,并将其上载到银行。为了检查它是否存在,客户端散列了一组参数,并询问银行是否已经存在散列密钥。根据以前使用MD5和SHA的经验,我发现它们不兼容跨平台!你确定你提到的其他函数是吗?@EdoTzumer我知道的所有加密哈希函数都是平台和语言无关的。如果您得到了不同的MD5(例如)散列,这仅仅意味着您没有提供相同的输入,或者您没有以相同的方式读取输出。语言和平台与此无关,除非在特定平台中存在实现错误,在这种情况下,它不是真正的MD5。@Throdoros如果这是100%正确,那就太好了。但是,您只需在32位和64位机器上检查.NET SHA-1,就可以看到不同的结果results@EdoTzumer我刚刚在Windows7和WindowsServer、32位和64位、.NETFramework版本3.5CP和4.0上进行了测试,结果(毫不奇怪)是相同的。您是否介意(在您的问题中)向我们展示一个非常小的代码示例,该示例演示了不同机器上的不同哈希行为?@EdoTzumer MD5/SHA/etc如果结果仅依赖于输入以外的任何内容,则不是很好的算法。无论操作系统/体系结构/语言如何,都可以信任正确实现的哈希算法生成相同的结果。请注意,它们返回一个byte[]数组-可能您看到的差异在于该数据的字符串表示形式。