2016-02-12 20 views
8

Posiadam projekt aplikacji sieci Web ASP.NET 5 RC1 (wkrótce będzie to ASP.NET Core).Obliczanie SHA1 z rdzeniem ASP.NET

Wymaga obliczenia skrótów SHA1.

Różne podklasy SHA1 są dostępne i budowane pod DNX 4.5.1, ale nie ma żadnej dostępnej implementacji w DNX Core 5.0.

Czy muszę dodać odwołanie, aby wprowadzić ten kod, czy jest on po prostu niedostępny dla .NET Core?

Według this article:

NET Rdzeń składa się z zestawu bibliotek, o nazwie „CoreFX” i małego, zoptymalizowanym starcie, zwany „CoreCLR”.

Rzeczywiście, w repo CoreFX nie ma podklasy SHA1:

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

Jednak w CoreCLR podklasy są tam jak można się spodziewać w ciągu mscorlib:

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

Dlaczego pokrywają się coreclr i corefx? Czy ten kod mscorlib nie jest dostępny dla projektów .NET Core?

W opisie System.Security.Crytpography.Algorithms package on NuGet mówi:

Zapewnia typy bazowe dla algorytmów kryptograficznych, w tym operacji mieszania, szyfrowania i podpisywania.

Czy istnieje inny pakiet zawierający rzeczywiste algorytmy, a nie tylko klasy bazowe? Czy to jest coś, co po prostu nie zostało jeszcze przeniesione? Czy jest gdzieś gdzie można sprawdzić status API i mapy drogowej, jak ma Mono?

+1

CoreCLR jest środowisko wykonawcze Rdzeń natomiast CoreFX są biblioteki. Jeśli SHA1 jest częścią samego środowiska * runtime, powinieneś być w stanie go użyć. Czy próbowałeś tworzyć implementacje algorytmu za pomocą metod fabrycznych? –

+0

@PanagiotisKanavos, hehe, całkowicie przegapił metodę fabryki (pomimo powiązania z nią). Dzięki temu mój kod się kompiluje. Jeśli chcesz napisać to jako odpowiedź, zaakceptuję to. –

Odpowiedz

25

Dodaj pakiet nuget .

Następnie

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

var hash = sha1.ComputeHash(myByteArray)