2016-02-12 306 views
8

我有一個ASP.NET 5 RC1(即將成爲ASP.NET Core)Web應用程序項目。使用ASP.NET Core計算SHA1

它需要計算SHA1散列。

各種SHA1子類是可用的並且在DNX 4.5.1下構建,但似乎在DNX Core 5.0下沒有任何可用的實現。

我是否需要添加一個引用來引入該代碼,或者它是否僅適用於.NET Core?

根據this article

.NET芯由一組庫,被稱爲「CoreFX」,和一個小的,優化的運行時,被稱爲「CoreCLR」的。

果然,在CoreFX回購,有沒有SHA1子類:

https://github.com/dotnet/corefx/tree/master/src/System.Security.Cryptography.Algorithms/src/System/Security/Cryptography

然而在CoreCLR子類在那裏你會期望,mscorlib程序中:

https://github.com/dotnet/coreclr/tree/43b39a73cbf832ec13ec29ed356cb75834e7a8d7/src/mscorlib/src/System/Security/Cryptography

爲什麼coreclr和corefx之間有重疊?這個mscorlib代碼不可用於.NET Core項目嗎?

System.Security.Crytpography.Algorithms package on NuGet的描述說:

提供基本類型的加密算法,包括散列,加密和簽名操作。

是否有另一個包含實際算法而不僅僅是基類的包?這是否還沒有被移植過?莫諾有什麼地方可以查看API和路線圖的狀態?

+1

CoreCLR是核心運行而CoreFX是庫。如果SHA1是* runtime *本身的一部分,則應該可以使用它。你有沒有嘗試通過工廠方法創建算法的實現? –

+0

@PanagiotisKanavos,呵呵,完全錯過了工廠方法(儘管鏈接到它)。用那個,我的代碼編譯。如果您想將其作爲答案發布,我會接受它。 –

回答

25

添加System.Security.Cryptography.Algorithms nuget包。

然後

var sha1 = System.Security.Cryptography.SHA1.Create(); 

var hash = sha1.ComputeHash(myByteArray)