[英]Is System.Security.Cryptography using SIMD optimisation?
我試圖用反射器研究 SHA-256 計算。 但它進入非托管代碼的某個地方。
我試圖找到的是 .NET System.Security.Cryptography 實現是否可以優化。 例如使用 SIMD。
所以問題是 - .NET 4.6+ SHA-256 是否會使用 SIMD。 如果沒有 - 可以通過使用 SIMD 來提高性能還是當前的實現是最好的?
編輯:我目前使用的 dll 在 Microsoft System.Security.Cryptography 中使用 CAPI 本機代碼,它調用的代碼是非托管的,我無法找到它的源代碼。
托管實現https://referencesource.microsoft.com/#mscorlib/system/security/cryptography/sha256managed.cs似乎沒有使用 SIMD。
我試圖用反射器研究 SHA-256 計算。 但它進入非托管代碼的某個地方。
.NET 中的大多數密碼學只是系統庫提供的功能的包裝器。 .NET Framework 中有一些歷史異常(例如 SHA256Managed),但這些在 .NET Core 中不再存在(例如SHA256Managed 不再是 managed ,類型名稱只是為了兼容性而存在)。
我試圖找到的是 .NET System.Security.Cryptography 實現是否可以優化。 例如使用 SIMD。
System.Security.Cryptography 是一個很大的命名空間,里面有很多不同的東西。 由於您特別提到了 SHA-2-256,我們可以將其分解一下。
(來自評論:它使用 avx2 嗎?avx512?)
不知道。 從理論上講,您可以進入/反匯編本機實現並找出答案。 我能用 AVX-512 找到的最老的處理器是Intel Core i7-7800X ,從 2017 年第二季度開始。我現在能找到的最新的 Windows FIPS CAVP 證書是 SHS#4253 (3/9/2018),所以有機會AVX-512 用於最新版本的 Windows 10。
(re: avx2/avx512 for sha256) 我該如何管理?
AFAIK,你不能; 除了加入該團隊( https://careers.microsoft.com )。
例如,我有 Amazon.Glacier dll,它使用 sha256 托管而不是 Cng .. 我想讓它使用我不需要的默認設置。
您需要讓亞馬遜更改為使用SHA256.Create()
。 改變別人的代碼並沒有真正實用的方法(除非它是接受貢獻的開源......在這種情況下,你可以嘗試直接改變它)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.