【问题标题】:FIPS-compliant HashAlgorithm on WinXP?WinXP 上符合 FIPS 的哈希算法?
【发布时间】:2009-08-04 22:04:43
【问题描述】:

如何在符合 FIPS 的 WinXP SP2 机器上使用 C# 来唯一地散列给定文件的内容?我不关心性能(还没有?)。

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

而且 MD5 已经过时了,因为它不是可靠的唯一性(是的,即使是这样小的可能性对我的项目来说也是不可接受的)。

【问题讨论】:

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

标签: c# .net windows-xp fips hashalgorithm


【解决方案1】:

如果您只需要一个散列提供程序,当 Windows 计算机在注册表中启用符合 FIPS 的策略设置时不会触发任何错误,那么您可以使用符合 FIPS 且仅需要 .Net 的 SHA1CryptoServiceProvider 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。

【讨论】:

    【解决方案2】:

    这些似乎是符合 fips 的:

    HMACSHA1、MACTripleDES 和 SHA1CryptoServiceProvider

    参考:http://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html

    【讨论】:

      猜你喜欢
      • 2013-07-25
      • 1970-01-01
      • 2016-06-23
      • 2016-04-11
      • 2011-04-26
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2013-05-12
      相关资源
      最近更新 更多