首页 > 解决方案 > RSA Crypto:第一次生成后是否需要存储密钥对

问题描述

一旦生成公钥/私钥,这是否必须存储或持久存储所以,当解密调用时,使用相同的私钥(与公钥相关)?基本上,将有两个单独的端点用于 RSA 加密和解密。

  using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
        {
            var pu = rsa.ToXmlString(false);               
            var pr = rsa.ToXmlString(true);               
        }

标签: c#cryptographyrsarsacryptoserviceprovider

解决方案


是的,几乎在所有情况下,您都需要永久存储私钥。您可以使用 RSA 来建立一次性密钥。但是,对于 RSA,创建密钥对相对较慢,因此 RSA 并不常用。

请注意,您还可以创建一个密钥对,其中私钥保留在密钥容器中,例如密钥库。例如,大多数智能卡的设计方式是私钥永远不会离开设备;它只是在需要时使用。密钥在创建后自动保留。因此,您将无法检索它们的值并将它们转换为 XML。

在没有任何保护的情况下以 Microsoft 专有 XML 格式存储密钥(如问题中的代码中所执行的那样)不是一个好主意。


推荐阅读