我認為計算 md5 哈希值是一個純粹的確定性函式,因此我認為在多執行緒代碼中使用單個 C# MD5CryptoServiceProvider 實體來計算哈希值應該是安全的,因為我認為 md5 計算會被實作為一個純粹的函式。
我不知道實作的細節,但我很驚訝它實作了 IDisposable,因為我不明白我假設作為一個純函式實作的東西需要什么樣的清理作業。
那么我認為在多執行緒代碼中對MD5CryptoServiceProvider的單個實體呼叫MD5CryptoServiceProvider.ComputeHash是安全的嗎?
uj5u.com熱心網友回復:
你的假設是正確的
。我不知道實作的細節,但我很驚訝它竟然 實作了IDisposable,
你的假設是正確的。
為什么驚訝?我希望這個方法能夠依賴于作業系統級別的加密功能,這些功能可能是作為一個 COM 介面來實作的,并且在不再使用時可以很好地釋放。
它甚至這樣說。"
它甚至這樣說:"使用由加密服務提供商(CSP)提供的實作。
查看源檔案(而不是想知道),您只需使用谷歌找到指向https://referencesource.microsoft.com/#mscorlib/system/security/cryptography/md5cryptoserviceprovider.cs的源檔案--其中涉及一個句柄,該句柄也在該處置呼叫中被處置。
您似乎認為這是在運行本地代碼--情況可能是這樣,也可能不是這樣,而且在 Windows 上,當它已經在作業系統中時,重新實作它是沒有意義的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/308322.html
標籤:
