C# WinXP上符合FIPS的哈希算法?

C# WinXP上符合FIPS的哈希算法?,c#,.net,windows-xp,fips,hashalgorithm,C#,.net,Windows Xp,Fips,Hashalgorithm,如何在符合FIPS标准的WinXP SP2框上使用C#来唯一地散列给定文件的内容?我不关心性能(现在?) 希望有人能指出“规则”的一个例外,但似乎“*ServiceProvider”类与FIPS兼容且在WinXP上不可用,而“*Managed”类在WinXP上可用且不与FIPS兼容 MD5被淘汰是因为它不是唯一可靠的(是的,即使这种可能性很小,对我的项目来说也是不可接受的)。看起来这些都是符合fips的: HMACSHA1、MACTripleDES和SHA1密码服务提供商 ref:如果您所需要的

如何在符合FIPS标准的WinXP SP2框上使用C#来唯一地散列给定文件的内容?我不关心性能(现在?)

希望有人能指出“规则”的一个例外,但似乎“*ServiceProvider”类与FIPS兼容且在WinXP上不可用,而“*Managed”类在WinXP上可用且不与FIPS兼容


MD5被淘汰是因为它不是唯一可靠的(是的,即使这种可能性很小,对我的项目来说也是不可接受的)。

看起来这些都是符合fips的:

HMACSHA1、MACTripleDES和SHA1密码服务提供商


ref:

如果您所需要的只是一个哈希提供程序,当Windows计算机在注册表中启用符合FIPS的策略设置时,它不会触发任何错误,那么您可以使用SHA1CryptoServiceProvider,它符合FIPS,并且只需要.Net 2.0和XP SP2

但是-如果出于安全和策略原因,您确实需要一个真正符合FIPS的实现,那么简单的答案就是让客户端升级到Win XP SP3(或更新的操作系统),或者考虑使用第三方FIPS验证的加密服务提供商(CSP)

虽然Win XP SP2支持SHA1(SHACryptoServiceProvider)的FIPS兼容实现,该实现将在FIPS兼容模式(注册表设置)下工作,但SHA1不应用于2010年后的新实现,并且可能不再符合FIPS,具体取决于使用情况(即用于随机数生成与哈希)


如果您至少可以使用XP SP3,那么您可以使用SHA256CryptoServiceProvider或SHA512CryptoServiceProvider,这两种都符合FIPS。

没有可靠的唯一哈希算法。顺便说一句,使用固定长度的散列不能唯一地表示任何长度的所有可能的文件。虽然技术上是正确的,但这在当今的计算中不是很有用。考虑到算法的可能性,您愿意冒险发现它不是唯一的。MD5已被证明不值得冒险,但SHA256和SH512非常值得冒险。SHA1介于两者之间,对很多人来说已经足够好了,尽管我自己会犹豫使用它。我永远不会使用MD5。