簡體   English   中英

對於啟用 FIPS 的系統,是否有替代 MD5 的散列算法?

[英]Is there an alternate hashing algorithm to MD5 for FIPS-enabled systems?

每當我嘗試在啟用了 FIPS 的 Windows XP 機器上使用 MD5 時,我都會收到System.InvalidOperationException

在 FIPS 上,我應該使用替代算法而不是 MD5 嗎?

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

當您在 Windows 安全策略設置中強制執行 FIPS 合規性時,您是在斷言您將只使用 FIPS 認證的加密和散列算法。 MD5不是這些批准的散列算法之一,這就是拋出異常的原因。

解決方法很簡單:選擇不同的散列算法。 .NET Framework 在System.Security.Cryptography命名空間中提供了許多其他選項。 選擇 SHA 系列算法之一。 我無法想象您必須使用 MD5 而不是其中一種替代方法的任何理由。

您可以使用 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();
}

出於加密散列的目的,如果需要,您可以將 SHA1、SHA2 或 SHA3 與 HMAC 一起使用。

如果您想將 MD5 用於非加密目的,那很好,但您需要提供自己的實現。 例子包括:

  • 哈希文件以確定重復項
  • 內部哈希表實現
  • 從他們提供的 MD5 哈希驗證文件

最后一點是有問題的; 驗證 SHA1/SHA2 哈希會更好,這取決於驗證(例如,它在傳輸過程中是否已損壞與數據包身份驗證)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM