Ich versuche, einige Daten mit RSA zu verschlüsseln und zu entschlüsseln. Ich habe die RSA
-Klasse nachgeschlagen, aber ich sehe nur die abstrakte Klasse Ссылка
Ich habe gelesen, dass sich die RSA-Klasse in DNX5 von der in .NET unterscheidet. 4.6 Ist das eine andere als die, die ich sehe? Wenn ja, wo kann ich die Dokumentation finden, um diese zu verwenden? Es scheint auch, dass RSACryptoServiceProvider
in .net core nicht funktioniert und ich nur Zugriff auf die abstrakte Klasse RSA
habe.
Sie sollten vermeiden, RSACryptoServiceProvider
zu verwenden, wenn Sie können. Es funktioniert nur unter Windows (und es ist die weniger gute RSA-Implementierung unter Windows). Bleiben Sie bei der Basisklasse RSA
und erstellen Sie neue Instanzen über RSA.Create()
Leider ist der Standardwert für RSA.Create () in .NET Framework RSACryptoServiceProvider, der set_KeySize nicht berücksichtigt. Wenn Sie also ephemere Schlüssel benötigen, müssen Sie für .NET Framework und .NET Core anderen Code verwenden:
%Vor%Oder, wenn Sie Versionen vor 4.6 unterstützen müssen (wo RSACng nicht existierte) / 4.6.2 (wo das meiste von .NET Framework glücklich mit RSACng-Objekten anstatt mit RSACryptoServiceProvider-Objekten funktionierte), können Sie weiterhin das verwenden ältere Implementierung:
%Vor%Obwohl RSACng im Allgemeinen einfacher zu verwenden ist als RSACryptoServiceProvider, sollte RSACryptoServiceProvider in diesem Kontext gut funktionieren, sodass RSA.Create () auf allen Plattformen gut ist:
%Vor%oder
%Vor%Ich wollte einige Beispiele über RSACryptoServiceProvider (WinXP + / CAPI) und RSACng (Win7 + / CNG) hinzufügen, die benannte Schlüssel erstellen / öffnen, aber das ist kein sehr häufiges Szenario in .NET; und es ist sicherlich nicht portierbar (Portabilität zu anderen Betriebssystemen ist eines der überzeugenderen Argumente für .NET Core).
Für .NET Core 1.0 und 1.1 erhalten Sie Zugriff auf die RSA-Basisklasse aus dem System.Security.Cryptography.Algorithms
-Paket. In .NET Core 2.0 wird es in die netstandard
-Referenz aufgenommen.
Wenn Sie komplexe Interoperabilität mit dem Betriebssystem benötigen, können Sie System.Security.Cryptography.Cng
(Windows CNG), System.Security.Cryptography.Csp
(Windows CAPI / CryptoServiceProvider) oder System.Security.Cryptography.OpenSsl
(Linux OpenSSL, macOS OpenSSL) und erhalten Zugriff auf die Interop-fähigen Klassen (RSACng, RSACryptoServiceProvider, RSAOpenSsl). Aber eigentlich solltest du das nicht tun.
Sie müssen stattdessen die dotnetcore-Bibliothek verwenden. Fügen Sie Ihrem Projekt das System.Security.Cryptography.Algorithms
Nuget-Paket hinzu. Sie finden es hier: System.Security.Cryptography.Algorithms
Es bietet alle gängigen Algorithmen für Ihr Projekt.
Hier ist die RSACryptoServiceProvider-Klasse , die Sie verwenden würden für die Methoden Encrypt () und Decrypt ().
Tags und Links .net cryptography asp.net-core encryption rsa