J'avais vraiment besoin de l'interopérabilité OpenSl avec RSACryptoServiceProvider pour pouvoir implémenter un système de clé de licence logicielle (Ref).
Je devais être capable de créer les clés privées et publiques sous Linux en utilisant openssl afin qu'elles puissent ensuite être utilisées pour la gestion des licences dans une application web PHP. Pourtant, également les utiliser comme base d'un système de licence de signature RSA dans une application VB.Net. Après une semaine de recherche, j'ai finalement découvert que c'est parfaitement possible, alors j'ai pensé que je le partagerais. Démarrer sur Linux (ou tout autre système d'exploitation) et utiliser openssl pour créer une clé privée (private.pem), une clé publique (public.pem), un certificat (certificate.crt) et un fichier d'échange d'informations personnelles (certificate.pfx). Ne vous inquiétez pas des champs CN et emailAddress, les fichiers certificat et pfx ne sont utilisés que pour véhiculer la clé publique ou privée dans l'objet RSACryptoServiceProvider.
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
Maintenant, pour obtenir la clé privée dans le code:
Dim cert As New X509Certificate2("certificate.pfx", "", X509KeyStorageFlags.Exportable)
Dim rsaProvider As RSACryptoServiceProvider = DirectCast(cert.PrivateKey, RSACryptoServiceProvider)
Si vous avez besoin de la clé privée ou publique, essayez ceci:
msgbox(rsaProvider.ToXmlString(True)) 'Private key in XML format
msgbox(rsaProvider.ToXmlString(False)) 'Public key in XML format
Pour obtenir la clé publique dans la code:
Dim cert As New X509Certificate2("certificate.crt")
Dim rsaProvider As RSACryptoServiceProvider = DirectCast(cert.PublicKey.Key, RSACryptoServiceProvider)
Si vous devez d la clé publique, essayez ceci:
msgbox(rsaProvider.ToXmlString(False)) 'Public key in XML format
Plus à venir .....
http://stackoverflow.com/questions/497428/how-do-i-import-an-rsa-public -key-from-net-into-openssl ressemble à ça devrait marcher, non? –