gpt4 book ai didi

c# - RSACryptoServiceProvider 和 openSSL 之间的互操作性

转载 作者:可可西里 更新时间:2023-11-01 08:25:41 25 4
gpt4 key购买 nike

我使用 .NET 类 RSACryptoServiceProvider 获取 key 对:

using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
File.WriteAllText ("PublicKeyOnly.xml", rsa.ToXmlString (false));
File.WriteAllText ("PublicPrivate.xml", rsa.ToXmlString (true));
}

现在,我想将它与 openSSH 一起使用,但 key 格式看起来一点都不像。有谁知道如何将公钥和私钥都转换为 openSSH 可以使用的文件?

谢谢!

最佳答案

我确实需要实现 Openssl 与 RSACryptoServiceProvider 的互操作性,以便我可以实现软件许可证 key 系统 (Ref)。

我需要能够使用 openssl 在 Linux 中创建私钥和公钥,以便以后可以将它们用于 PHP 网络应用程序中的许可证管理。然而,也可以将它们用作 VB.Net 应用程序中 RSA 签名许可系统的基础。

经过一周的搜索,我最终发现这是完全可能的,所以我想分享一下。

在 Linux(或任何其他有用的操作系统)上启动并使用 openssl 创建私钥 (private.pem)、公钥 (public.pem)、证书 (certificate.crt) 和个人信息交换文件 (证书.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/emailAddress=info@example.com' -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

更多内容......

关于c# - RSACryptoServiceProvider 和 openSSL 之间的互操作性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3260319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com