7 Stimmen

Verschlüsselungsbibliotheken?

Ich wurde mit der Implementierung einer PKI-Bibliothek in C# für ein Unternehmensprojekt beauftragt und war nicht in der Lage, eine gute Implementierung dafür zu finden. Es scheint mehrere Bibliotheken zu geben, und viele defekte Links, die auf MSDN-Bibliotheken verweisen, die entfernt wurden. Ich habe Leute gesehen, die Crypt32.dll verwenden, Leute, die ihre eigenen Bibliotheken erstellen, Leute, die P/Invoke verwenden, um auf Systemzertifikatspeicher zuzugreifen, Leute, die die eingebauten Bibliotheken erweitern, Beispiele, die einfach nicht auf C# zutreffen (z. B. Java-Beispiele), und kommerzielle Bibliotheken.

Meine Frage ist, welche Implementierung/Bibliothek wird für die einfache Ver-/Entschlüsselung von Daten am meisten empfohlen?

Als Hintergrundinformation zu dem, was ich damit vorhabe, muss ich einfach Nachrichten mit einem privaten Schlüssel (.pfx) verschlüsseln und mit öffentlichen Schlüsseln (.cer) entschlüsseln. Die Signierung und Authentifizierung von Nachrichten ist auf dieser Ebene des Projekts nicht erforderlich, obwohl dies in Zukunft der Fall sein könnte. Ich habe Hinweise auf Verschlüsselungslängen gesehen, die mich beunruhigen. Wir müssen in der Lage sein, Nachrichten beliebiger Länge zu verschlüsseln (natürlich in einem vernünftigen Rahmen!). Ist dies etwas, worüber ich mir Sorgen machen muss, und wenn ja, gibt es eine Möglichkeit, damit umzugehen?

Ich würde es vorziehen, öffentliche/private Schlüssel möglichst nicht im Windows-Zertifikatsmanager zu speichern, aber wenn dies die Implementierung erheblich vereinfacht, dann soll es so sein.

Ich weiß, dass PKI und Verschlüsselung ein großes und komplexes Thema ist, aber ich hoffe trotzdem auf eine relativ einfache Bibliothek... (man kann ja hoffen, oder?)

Danke!

12voto

Seb Nilsson Punkte 25510

Nun, Sie haben nicht erwähnt, dass die eingebaute Klasse Ihren Bedarf nicht deckt, wie wäre es also mit System.Security.Cryptography.RSACryptoServiceProvider ?

Es verfügt über eine große Anzahl qualifizierter Möglichkeiten zur asymmetrischen Ver- und Entschlüsselung von Datenströmen.

Es gibt mehrere Tutorials/Anleitungen, die Sie auf Ihrem Weg begleiten:

Es gibt noch unzählige weitere, die Sie über Google .

Update : Was die Längenbeschränkungen angeht, so sollte es keine Probleme geben, wenn Sie auf beiden Seiten denselben Pufferalgorithmus für die Ver- und Entschlüsselung verwenden.

Aktualisierung2 : Ja, mein Beispiel war RSACryptoProvider verwenden, aber Sie können jede Klasse verwenden, die sich von System.Security.Cryptography.AsymmetricAlgorithm wenn Sie eine Lösung mit öffentlichem/privatem Schlüssel wünschen. Oder bauen Sie Ihre eigene... oder vielleicht auch nicht :)

0voto

Alan Mendelevich Punkte 3541

Ja, was ist falsch an integrierten Klassen?

Und wenn Sie den Windows-Zertifikatspeicher nicht verwenden möchten, können Sie etwas wie das folgende verwenden

RSACryptoServiceProvider rscp = new RSACryptoServiceProvider();
rscp.FromXmlString("<RSAKeyValue><Modulus>key data gere</Modulus><Exponent></Exponent></RSAKeyValue>");

Ich bin mir allerdings nicht sicher, ob dies eine gute Idee für private Schlüssel ist.

Es gibt ein gutes Tutorial zu diesem Thema aquí

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X