2016-03-03 63 views
0

在我的應用程序中,通過使用System.Security.Cryptography.MD5(C#)爲文件計算CRC值。它被用作一個緊湊的數字指紋。如何計算MD5值,就好像您正在使用System.Security.Cryptography.MD5類

如果禁用以下Windows本地策略,則聲明MD5類不符合FIPS,並且「所有內容」均可正常工作: 「系統加密:使用符合FIPS的算法進行加密,散列和簽名」。

現在,我需要啓用上述系統策略,但MD5類調用失敗。 有沒有一種方法來計算CRC值,就像使用System.Security.Cryptography.MD5一樣?提前

感謝,認爲

+4

您的要求彼此不一致。您必須啓用「使用符合FIPS的算法」策略,但您還必須使用不符合FIPS的MD5。對於一個不合邏輯的問題沒有技術解決方案。 –

+0

注意:MD5不是CRC。 – zaph

回答

0

由於Damien_The_Unbeliever上面提到,你的要求是不相容的。但稍微更詳細的答案是「是和否」。

否:由於存在已知的碰撞,因此不應再使用MD5。幾乎所有的加密目的都被打破了。如果這些指紋用於任何安全相關的環境中,那麼建議您更改爲安全的散列函數。 SHA2和SHA3是安全的並且通過FIPS認證。將整個應用程序切換到不同的散列函數可能會導致您現在的一些痛苦,但以後會更痛苦。

是:這是可能的 - 您可以自己重新實現MD5或使用不檢查Windows策略的庫。你所要做的就是確保數據格式正確。不過,我強烈建議不要這樣做。 MD5壞了。

由於您已經聲明必須爲符合FIPS的加密策略啓用該策略,因此我認爲這是客戶或銷售要求​​,您無法選擇,只能切換到SHA2或SHA3。

+0

您認爲安全性比更新安全算法更爲重要。 ;-)許多開發人員不同意。 – zaph

+0

我知道 - 這就是爲什麼我提到第二部分。 ;-)但問題描述表明存在明確的安全要求(或者至少符合明確的標準兼容性要求)。所以我必須假設,如果沒有達到這個要求會有影響。 – Tempi

+0

我比普通OP更普遍。 – zaph