RSA Crypto:第一次生成后是不是需要存储密钥对
Posted
技术标签:
【中文标题】RSA Crypto:第一次生成后是不是需要存储密钥对【英文标题】:RSA Crypto: Is it require to store keypair after geneating first timeRSA Crypto:第一次生成后是否需要存储密钥对 【发布时间】:2018-12-10 22:48:59 【问题描述】:一旦生成公钥/私钥,这是否必须存储或持久存储所以,当解密调用时,使用相同的私钥(与公钥相关)? 基本上,RSA 加密和解密会有两个独立的端点。
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
var pu = rsa.ToXmlString(false);
var pr = rsa.ToXmlString(true);
【问题讨论】:
【参考方案1】:是的,几乎在所有情况下,您都需要永久存储私钥。您可以使用 RSA 来建立一次性密钥。但是 RSA 创建密钥对的速度相对较慢,因此 RSA 并不常用。
请注意,您还可以创建一个密钥对,其中私钥保留在 key container 中,例如密钥库。例如,大多数智能卡的设计方式是私钥永远不会离开设备;它只是在需要时使用。密钥在创建后自动保留。因此,您将无法检索它们的值并将它们转换为 XML。
在没有任何保护的情况下以 Microsoft 专有 XML 格式存储密钥(如问题代码中所执行的那样)不是一个好主意。
【讨论】:
存储在“密钥容器”中会是内存存储吗?基本上,服务器上也会有负载均衡,所以,计划存储到数据库表中。 这取决于容器,但通常密钥存储在磁盘或闪存上。您可以找到更多信息here。使用与数据库不同的密钥分配方式可能是明智的。然而,我们现在正在进入密钥管理领域,这本身就是一个主题。 还有一件事,所以当存储在数据库中时,不需要创建 keycontainer ,对吧? 呃,不,但我确实试图警告您不要将其存储在数据库中。 如果我没记错的话,您应该能够通过组策略和其他东西分发证书。不幸的是,我不是 IT 部门,所以我从来没有这样做过,我不确定这是否可能包括私钥(私钥经常保留,嗯,私人)。以上是关于RSA Crypto:第一次生成后是不是需要存储密钥对的主要内容,如果未能解决你的问题,请参考以下文章