.NET RSA 加密中的公钥在哪里

Posted

技术标签:

【中文标题】.NET RSA 加密中的公钥在哪里【英文标题】:Where is the Public Key in the .NET RSA encryption 【发布时间】:2015-11-03 09:56:52 【问题描述】:

关于此示例:https://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider(v=vs.110).aspx

此示例中用于加密数据的公钥在哪里?

是在 RSAParameters 对象里面吗?

如果是的话,什么是正确的字节数组,对它进行 base64 编码并将字符串放入 web.config 以在我必须解密以前加密的数据时重新使用公钥?

【问题讨论】:

【参考方案1】:

如果您阅读了提供链接的文章,那么您将看到示例说明

    //Export the key information to an RSAParameters object.
    //Pass false to export the public key information or pass
    //true to export public and private key information.
    RSAParameters RSAParams = RSA.ExportParameters(false);

不确定您对公钥加密的理解程度,但您使用公钥加密数据并使用私钥解密数据,因此您需要确保私钥安全存储,配置文件不安全

您可以在此处阅读有关参数的信息 https://msdn.microsoft.com/en-gb/library/system.security.cryptography.rsaparameters%28v=vs.110%29.aspx

【讨论】:

我希望 pub/prv 密钥是一种字符串,而不是 RSAParameters。我应该如何使用该参数来获取可以作为资源嵌入或保存在某处的字符串? 如果您检查我提出的链接,您将看到 RSAParameters 使用 SerializableAttribute 这意味着您可以使用任何序列化器将其写入数据存储msdn.microsoft.com/en-us/library/4abbf6k0%28v=vs.110%29.aspx 有一个如何序列化到二进制文件。但是,如果您将文件流交换为内存流,则可以使用流阅读器将其读入字符串变量msdn.microsoft.com/en-us/library/… 我想将它嵌入到程序集中。因此,我创建了一个带有键/值对的字符串资源,并设置了嵌入资源。你觉得这样好吗? 只要您不需要满足任何应该没问题的安全规定,但要非常确定您的网络配置的安全性意味着任何不应该拥有的人都看不到它。如果您需要满足任何法规,那么我建议您使用网络服务器证书存储作为您的存储,这就是它们的创建目的 "...不确定您对公钥加密的理解程度..." 我在寻找字符串密钥;-)

以上是关于.NET RSA 加密中的公钥在哪里的主要内容,如果未能解决你的问题,请参考以下文章

Perl 和 .NET RSA 一起工作?从 Perl 公钥在 .NET 中加密?从 Perl 加载私钥?

.NET 中的 RSA 加密/解密问题

.NET 中的 RSA 加密/解密问题

如何解密 .NET 中的 RSA 内容?

ssl证书的加密算法?

dotnet c#中的公钥RSA加密