2016-02-12 40 views
8

Possiedo un progetto di applicazione Web ASP.NET 5 RC1 (che presto diventerà ASP.NET Core).Computing SHA1 con ASP.NET Core

È necessario calcolare gli hash SHA1.

Diverse sottoclassi SHA1 sono disponibili e compilate sotto DNX 4.5.1, ma non sembra esserci alcuna implementazione disponibile in DNX Core 5.0.

Devo aggiungere un riferimento per portare quel codice o semplicemente non è ancora disponibile per .NET Core?

Secondo this article:

.NET nucleo è costituito da un insieme di librerie, chiamato “CoreFX”, e una piccola, runtime ottimizzato, chiamato “CoreCLR”.

Abbastanza sicuro, nel repository CoreFX, non ci sono sottoclassi di SHA1:

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

Tuttavia in CoreCLR sottoclassi sono lì come ci si aspetta, entro mscorlib:

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

Perché c'è sovrapposizione tra coreclr e corefx? Questo codice mscorlib non è disponibile per i progetti .NET Core?

La descrizione del System.Security.Crytpography.Algorithms package on NuGet dice:

Fornisce tipi di base per gli algoritmi di crittografia, comprese le operazioni di hashing, crittografia e firma.

C'è un altro pacchetto che include algoritmi effettivi e non solo classi base? È qualcosa che semplicemente non è stato ancora realizzato? C'è un posto dove puoi rivedere lo stato delle API e una roadmap, come ha Mono?

+1

CoreCLR è il runtime core, mentre CoreFX sono le librerie. Se SHA1 fa parte del * runtime * stesso, dovresti essere in grado di usarlo. Hai provato a creare implementazioni dell'algoritmo attraverso i metodi di fabbrica? –

+0

@PanagiotisKanavos, hehe, ha mancato completamente il metodo factory (nonostante il collegamento ad esso). Con ciò, compila il mio codice. Se desideri pubblicarlo come risposta, lo accetto. –

risposta

25

Aggiungere il pacchetto nuget System.Security.Cryptography.Algorithms.

Poi

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

var hash = sha1.ComputeHash(myByteArray)