【问题标题】:How to compute MD5 value as if you are using the System.Security.Cryptography.MD5 class如何像使用 System.Security.Cryptography.MD5 类一样计算 MD5 值
【发布时间】:2016-06-16 13:37:38
【问题描述】:

在我的应用程序中,使用 System.Security.Cryptography.MD5 (C#) 为文件计算 CRC 值。它用作紧凑型数字指纹。

如果禁用以下 Windows 本地策略,则 MD5 类被声明为不符合 FIPS 并且“一切”都可以正常工作: “系统加密:使用符合 FIPS 的算法进行加密、散列和签名”。

现在,我需要启用上述系统策略,但调用时 MD5 类失败.. 有没有办法像使用 System.Security.Cryptography.MD5 一样计算 CRC 值?

提前致谢,问候

【问题讨论】:

  • 您的要求相互矛盾。您“必须”启用“使用符合 FIPS 的算法”策略,但您还必须使用不符合 FIPS 的 MD5。不合逻辑的问题没有技术解决方案。
  • 注意:MD5 不是 CRC。

标签: c# cryptography md5 computation


【解决方案1】:

正如 Damien_The_Unbeliever 上面提到的,您的要求是不兼容的。但稍微详细一点的答案是“是和不是”。

否:不应再使用 MD5,因为存在已知的冲突。几乎所有加密目的都被破坏了。如果在任何与安全相关的上下文中使用了这些指纹,那么建议您更改为安全哈希函数。 SHA2 和 SHA3 是安全的并且经过 FIPS 认证。将整个应用程序切换到不同的哈希函数现在可能会给您带来一些痛苦,但以后会更痛苦。

是的:有可能 - 您可以自己重新实现 MD5 或使用不检查 Windows 策略的库。您所要做的就是确保正确的数据格式。但是,我强烈建议不要使用此选项。 MD5 坏了。

由于您已声明必须启用符合 FIPS 的加密策略,我认为这是客户或销售要求​​,这让您别无选择,只能切换到 SHA2 或 SHA3。

【讨论】:

  • 您假设安全性比更新到安全算法的痛苦更重要。 ;-) 许多开发者不同意。
  • 我知道——这就是我提到第二部分的原因。 ;-) 但问题描述表明存在明确的安全要求(或至少有明确的标准合规要求)。因此,我必须假设未能满足该要求会产生影响。
  • 我比仅仅提到 OP 更笼统。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
相关资源
最近更新 更多