Tôi thực sự cần thiết để đạt được khả năng tương tác Openssl với RSACryptoServiceProvider, để tôi có thể triển khai hệ thống khóa cấp phép phần mềm (Ref).
Tôi cần thiết để có thể tạo khóa riêng và khóa công khai trong Linux bằng openssl để sau này chúng có thể được sử dụng để quản lý giấy phép trong ứng dụng web PHP. Tuy nhiên, cũng sử dụng chúng như là cơ sở của một hệ thống giấy phép chữ ký RSA trong một ứng dụng VB.Net.
Sau một tuần tìm kiếm, cuối cùng tôi phát hiện ra rằng điều này là hoàn toàn có thể, vì vậy tôi nghĩ tôi sẽ chia sẻ nó.
Bắt đầu trên Linux (hoặc bất kỳ hệ điều hành hữu ích nào khác) và sử dụng openssl để tạo khóa riêng (private.pem), khóa công cộng (public.pem), chứng chỉ (certificate.crt) và Tệp Trao đổi thông tin cá nhân (certificate.pfx). Đừng lo lắng về các trường CN và emailAddress, các chứng chỉ và các tệp pfx chỉ được sử dụng như một phương tiện để lấy khóa công cộng hoặc khóa riêng vào đối tượng 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
Bây giờ để có được khóa bí mật vào mã:
Dim cert As New X509Certificate2("certificate.pfx", "", X509KeyStorageFlags.Exportable)
Dim rsaProvider As RSACryptoServiceProvider = DirectCast(cert.PrivateKey, RSACryptoServiceProvider)
Nếu bạn cần khóa riêng hoặc khóa công khai thử điều này:
msgbox(rsaProvider.ToXmlString(True)) 'Private key in XML format
msgbox(rsaProvider.ToXmlString(False)) 'Public key in XML format
Để có được khóa công khai vào mã:
Dim cert As New X509Certificate2("certificate.crt")
Dim rsaProvider As RSACryptoServiceProvider = DirectCast(cert.PublicKey.Key, RSACryptoServiceProvider)
Nếu bạn nee d khóa công khai thử điều này:
msgbox(rsaProvider.ToXmlString(False)) 'Public key in XML format
More tới .....
http://stackoverflow.com/questions/497428/how-do-i-import-an-rsa-public -key-from-net-into-openssl có vẻ như nó sẽ hoạt động, phải không? –