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

时间:2011-02-03 23:48:06

标签: c# .net cryptography md5 invalidoperationexception

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

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

3 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:12)

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

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

答案 2 :(得分: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();
}
相关问题