Ich musste wirklich OpenSSL Interoperabilität mit RSACryptoServiceProvider erreichen, so dass ich ein Softwarelizenzschlüssel-System implementieren konnte (Ref).
Ich musste in der Lage sein, die privaten und öffentlichen Schlüssel in Linux mit openssl zu erstellen, damit sie später für die Lizenzverwaltung in einer PHP-Webanwendung verwendet werden konnten. Verwenden Sie sie jedoch auch als Grundlage für ein RSA-Signaturlizenzsystem in einer VB.Net-Anwendung.
Nach einer Woche der Suche, habe ich schließlich entdeckt, dass dies perfekt möglich ist, also dachte ich, ich würde es teilen.
Starten Sie unter Linux (oder einem anderen nützlichen Betriebssystem) und verwenden Sie openssl, um einen privaten Schlüssel (private.pem), einen öffentlichen Schlüssel (public.pem), ein Zertifikat (certificate.crt) und eine Exchange-Datei für persönliche Informationen zu erstellen (Zertifikat.pfx). Machen Sie sich keine Sorgen über die Felder CN und emailAddress, die Zertifikats- und pfx-Dateien werden nur als Vehikel verwendet, um den öffentlichen oder privaten Schlüssel in das RSACryptoServiceProvider-Objekt zu bekommen.
openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -out public.pem -pubout
openssl req -nodes -x509 -days 3650 -subj '/CN=www.example.com/[email protected]' -new -key private.pem -out certificate.crt
openssl pkcs12 -export -out certificate.pfx -inkey private.pem -in certificate.crt
nun den privaten Schlüssel in den Code zu bekommen:
Dim cert As New X509Certificate2("certificate.pfx", "", X509KeyStorageFlags.Exportable)
Dim rsaProvider As RSACryptoServiceProvider = DirectCast(cert.PrivateKey, RSACryptoServiceProvider)
Wenn Sie den privaten Schlüssel oder öffentliche Schlüssel versuchen müssen dies:
msgbox(rsaProvider.ToXmlString(True)) 'Private key in XML format
msgbox(rsaProvider.ToXmlString(False)) 'Public key in XML format
Um den öffentlichen Schlüssel in das bekommen code:
Dim cert As New X509Certificate2("certificate.crt")
Dim rsaProvider As RSACryptoServiceProvider = DirectCast(cert.PublicKey.Key, RSACryptoServiceProvider)
Wenn Sie brauchen d der öffentliche Schlüssel versuchen Sie dies:
msgbox(rsaProvider.ToXmlString(False)) 'Public key in XML format
Mehr Informationen zu kommen .....
http://stackoverflow.com/questions/497428/how-do-i-import-an-rsa-public -key-from-net-in-openssl sieht so aus als ob es funktionieren sollte, nein? –