如何在符合FIPS标准的WinXP SP2框上使用C#来唯一地散列给定文件的内容?我不关心表现(但是?)。
希望有人可以指出“规则”的例外,但似乎“* ServiceProvider”类符合FIPS并且在WinXP上不可用,而“*托管”类在WinXP上可用,而不是FIPS-兼容。
MD5已经淘汰,因为它不是唯一可靠的(是的,即使我的项目很小的可能性也是不可接受的)。
答案 0 :(得分:2)
如果您需要的是一个哈希提供程序,当Windows计算机在注册表中启用了FIPS兼容策略设置时,它不会导致任何错误,那么您可以使用SHA1CryptoServiceProvider,它符合FIPS并且只需要.Net 2.0和XP SP2。
但是 - 如果出于安全和策略原因,您实际上需要真正符合FIPS标准的实现,那么简短的答案是让客户端升级到Win XP SP3(或更新的操作系统)或者使用第三方FIPS验证加密服务提供商(CSP)。
虽然Win XP SP2支持符合FIPS标准的SHA1(SHACryptoServiceProvider)实现,它将在FIPS兼容模式(注册表设置)下工作,但是SHA1不应该用于2010年之后的新实现,并且可能根本不再符合FIPS标准,取决于用法(即用于随机数生成与散列)。
如果你至少可以使用XP SP3,那么你可以使用符合FIPS标准的SHA256CryptoServiceProvider或SHA512CryptoServiceProvider。
答案 1 :(得分:0)
这些似乎符合fips:
HMACSHA1,MACTripleDES和SHA1CryptoServiceProvider
参考:http://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html