对于支持FIPS的系统,是否有针对MD5的备用哈希算法?

问题描述 投票:19回答:3

每当我尝试在启用了FIPS的Windows XP计算机上使用MD5时,我都会得到一个System.InvalidOperationException

在FIPS上是否应该使用替代算法而不是MD5?

c# .net cryptography md5 invalidoperationexception
3个回答
15
投票

MD5不符合FIPS标准。您可以使用以下散列算法之一代替MD5:


12
投票

在Windows安全策略设置中强制执行FIPS合规性时,您断言您将仅使用FIPS认证的加密和散列算法。 MD5不是这些经批准的散列算法之一,这就是抛出异常的原因。

解决方法很简单:选择不同的散列算法。 .NET Framework在System.Security.Cryptography namespace中提供了许多其他选项。选择SHA系列算法之一。我无法想象你有什么理由不得不使用MD5而不是其中一种替代品。


0
投票

您可以使用Org.BouncyCastle.Crypto.Digests中的MD5Digest

MD5Digest hash = new MD5Digest();

public byte[] Hash(byte[] input)
{
     hash.BlockUpdate(input, 0, input.Length);
     byte[] result = new byte[hash.GetDigestSize()];
     hash.DoFinal(result, 0);
     return result;
}

public string Hash(string input)
{
     var data = System.Text.Encoding.Unicode.GetBytes(input);
     hash.BlockUpdate(data, 0, data.Length);
     byte[] result = new byte[hash.GetDigestSize()];
     hash.DoFinal(result, 0);

     return Hex.ToHexString(result).ToUpper();
}
© www.soinside.com 2019 - 2024. All rights reserved.