我確實需要實現與RSACryptoServiceProvider的Openssl互操作性,以便我可以實現軟件許可證密鑰系統(Ref)。
我需要能夠在Linux中使用openssl創建私鑰和公鑰,以便稍後可以將它們用於PHP Web應用程序中的許可證管理。然而,也可以將它們用作VB.Net應用程序中的RSA簽名許可證系統的基礎。
經過一週的搜索,我終於發現這是完全可能的,所以我想我會分享它。
從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)
如果您需要d公鑰試試這個:
msgbox(rsaProvider.ToXmlString(False)) 'Public key in XML format
更多來.....
http://stackoverflow.com/questions/497428/how-do-i-import-an-rsa-public -key-from-net-into-openssl看起來應該起作用,不是嗎? – 2011-06-06 14:58:41