Мне действительно нужно было добиться совместимости Openssl с RSACryptoServiceProvider, чтобы я мог внедрить систему лицензионных ключей программного обеспечения (Ссылка).
Мне нужно было создать закрытый и открытый ключи в Linux с помощью openssl, чтобы впоследствии их можно было использовать для управления лицензиями в веб-приложении PHP. Тем не менее, вы также можете использовать их в качестве основы системы лицензирования подписи RSA в приложении VB.Net.
После недели поиска я в конце концов обнаружил, что это вполне возможно, поэтому я решил поделиться этим.
Начните с Linux (или любой другой полезной ОС) и используйте openssl для создания закрытого ключа (private.pem), открытого ключа (public.pem), сертификата (certificate.crt) и файла обмена личной информацией (certificate.pfx). ). Не беспокойтесь о полях CN и emailAddress, файлы сертификата и pfx используются только как средство для получения открытого или закрытого ключа в объекте 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
Теперь, чтобы получить закрытый ключ в коде:
Dim cert As New X509Certificate2("certificate.pfx", "", X509KeyStorageFlags.Exportable)
Dim rsaProvider As RSACryptoServiceProvider = DirectCast(cert.PrivateKey, RSACryptoServiceProvider)
Если вам нужен закрытый ключ или открытый ключ, попробуйте следующее:
msgbox(rsaProvider.ToXmlString(True)) 'Private key in XML format
msgbox(rsaProvider.ToXmlString(False)) 'Public key in XML format
Чтобы получить открытый ключ в коде:
Dim cert As New X509Certificate2("certificate.crt")
Dim rsaProvider As RSACryptoServiceProvider = DirectCast(cert.PublicKey.Key, RSACryptoServiceProvider)
Если вам нужен открытый ключ, попробуйте следующее:
msgbox(rsaProvider.ToXmlString(False)) 'Public key in XML format
Еще не все .....
person
theDuck
schedule
28.05.2012