每当我尝试在启用了FIPS的Windows XP计算机上使用MD5时,我都会得到System.InvalidOperationException
。
在FIPS上是否应该使用替代算法代替MD5?
答案 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();
}