Ich stoße auf ein sehr ähnliches Problem beim Erstellen eines nativen C # -Tools zum Packen von Chrome-Erweiterungen (mit SHA1, nicht MD5, aber das ist kein großer Unterschied). Ich glaube, ich habe buchstäblich jede mögliche Lösung für .Net: System.Security.Cryptography, BouncyCastle, OpenSSL.Net und Chilkat RSA versucht.
Die beste Lösung ist wahrscheinlich Chilkat; ihre Schnittstelle ist die sauberste und einfachste, sie ist gut unterstützt und gut dokumentiert, und es gibt eine Million Beispiele. Zum Beispiel ist hier ein Code, der ihre Bibliothek verwendet, die etwas sehr nahe an dem was du willst: Ссылка . Allerdings ist es nicht kostenlos (obwohl $ 150 nicht unvernünftig ist, da ich 2 Tage gebrannt habe, um das herauszufinden, und ich mache etwas mehr als 75 $ pro Tag!).
Als kostenlose Alternative bietet JavaScience eine Reihe von Krypto-Dienstprogrammen in Quellform für mehrere Sprachen (einschließlich C # /. Net) unter Ссылка . Der, der am meisten hervorsticht, was Sie versuchen, ist opensslkey ( Ссылка ), mit dem Sie ein generieren können RSACryptoServiceProvider aus einer PEM-Datei. Sie können diesen Anbieter dann verwenden, um Ihren Code zu signieren:
%Vor%Diese SO-Frage beantwortet den PKCS # 8-Teil Ihres Codes. Der Rest der .NET RSA-Klassen ist ein bizarres Durcheinander von teilweise überlappenden Klassen, die sehr schwer zu ergründen sind. Es scheint, dass die Signaturunterstützung in den Klassen RSACryptoServiceProvider und / oder RSAPKCS1SignatureFormatter liegt.
Haftungsausschluss: Ich kenne Java und Kryptographie, aber meine Kenntnisse in C # und .NET sind sehr begrenzt. Ich schreibe hier nur unter dem Einfluss meiner Google-Fu-Fähigkeiten.
Wenn Sie davon ausgehen, dass Sie einen PKCS # 8-codierten privaten RSA-Schlüssel dekodieren können, sollte der Rest des Codes nach dem, was ich auf MSDN gelesen habe, so aussehen:
%Vor% Die relevanten Klassen befinden sich im Namensraum System.Security.Cryptography
.
Wie bei der PKCS # 8-Schlüsselblob-Decodierung (dh beim Ausfüllen der Felder rsp
) habe ich diese Seite DecodePrivateKeyInfo()
PKCS8EncodedKeySpec
.
Tags und Links c# security cryptography encryption