我們有一些客戶想要在“ FIPS 模式”下在 Windows 上運(yùn)行我們的軟件(使用 DevForce)。似乎 DevForce 完成的大部分加密在默認(rèn)情況下都符合 FIPS,但我們遇到了 DevForce 所做的一些散列問題。具體來說,使用調(diào)用如下的代碼AesCryptoProvider.CalcStringHash:/// <summary>/// Returns a hash encoded as a string with the chars (A-Z,A-z,0-9,_) only./// </summary>/// <remarks>/// Under the covers this method returns an 128 bit hash code calculated/// using SHA1. This code is then encoded into an approx Base64 encode/// of the chars listed above. This will usually be approx 28 chars in length,/// which may then be truncated based on the maxChars parameter. This/// method can process approx 100K 300 char strings a second./// </remarks>/// <param name="stringToHash"></param>/// <param name="maxChars"></param>/// <returns></returns>public string CalcStringHash(string stringToHash, int maxChars){ return CodingFns.EncodeBase64(new SHA1Managed().ComputeHash(Encoding.Unicode.GetBytes(stringToHash))).Substring(0, maxChars).Replace("=", "").Replace("/", "_d").Replace("+", "_p");}該方法直接實(shí)例化一個(gè)SHA1Managed實(shí)例,不幸的是,該類不符合 FIPS。這是上下文的完整堆棧跟蹤:Exception: System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms. at System.Security.Cryptography.SHA1Managed..ctor() at IdeaBlade.Core.PlatformServices.AesCryptoProvider.CalcStringHash(String stringToHash, Int32 maxChars) at IdeaBlade.Core.DynamicTypeInfo.GetUniqueToken() at IdeaBlade.Core.DynamicTypeInfo.BuildDynamicTypeName()是否有任何解決方法可以讓 DevForce 在 FIPS 模式下工作?或者這是可以在未來版本中添加的內(nèi)容嗎?我注意到對(duì)該方法的評(píng)論談到了性能。如果這是一種性能關(guān)鍵的方法并且切換到 FIPS-complaint 替代方法會(huì)導(dǎo)致性能下降,那么它可能是一個(gè)可配置的選項(xiàng)?我們只有一位客戶抱怨 FIPS,但有更多客戶關(guān)心性能,所以我不想讓不關(guān)心 FIPS 的人更慢。
1 回答

守著星空守著你
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
這是一個(gè)錯(cuò)誤,我們可以解決這個(gè)問題(希望下一個(gè)版本)。此散列邏輯僅在為“動(dòng)態(tài)”類型生成名稱時(shí)使用,在處理匿名類型和動(dòng)態(tài)查詢時(shí)使用。您可以通過投影到自定義類型而不是匿名類型來解決此錯(cuò)誤,否則沒有解決方法可以避免該問題。
如果性能是一個(gè)問題,并且很可能不是因?yàn)檫@種散列現(xiàn)在僅用于動(dòng)態(tài)類型名稱,我們可以查看一個(gè)開關(guān)以在 FIPS/非 FIPS 兼容提供程序之間進(jìn)行選擇。
- 1 回答
- 0 關(guān)注
- 202 瀏覽
添加回答
舉報(bào)
0/150
提交
取消