我确实需要实现与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