如何在符合 FIPS 的 WinXP SP2 机器上使用 C# 来唯一地散列给定文件的内容?我不关心性能(还没有?)。
希望有人能指出“规则”的一个例外,但似乎“*ServiceProvider”类符合 FIPS 且在 WinXP 上不可用,而“*Managed”类在 WinXP 上可用但不符合 FIPS。
并且 MD5 被淘汰是因为它不是可靠的唯一性(是的,即使是这种小可能性对我的项目来说也是不可接受的)。
如何在符合 FIPS 的 WinXP SP2 机器上使用 C# 来唯一地散列给定文件的内容?我不关心性能(还没有?)。
希望有人能指出“规则”的一个例外,但似乎“*ServiceProvider”类符合 FIPS 且在 WinXP 上不可用,而“*Managed”类在 WinXP 上可用但不符合 FIPS。
并且 MD5 被淘汰是因为它不是可靠的唯一性(是的,即使是这种小可能性对我的项目来说也是不可接受的)。
如果您只需要一个散列提供程序,当 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。
这些似乎是符合 fips 的:
HMACSHA1、MACTripleDES 和 SHA1CryptoServiceProvider
参考:http ://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html