c# - RSA Crypto:第一次生成后是否需要存储密钥对
问题描述
一旦生成公钥/私钥,这是否必须存储或持久存储所以,当解密调用时,使用相同的私钥(与公钥相关)?基本上,将有两个单独的端点用于 RSA 加密和解密。
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
var pu = rsa.ToXmlString(false);
var pr = rsa.ToXmlString(true);
}
解决方案
是的,几乎在所有情况下,您都需要永久存储私钥。您可以使用 RSA 来建立一次性密钥。但是,对于 RSA,创建密钥对相对较慢,因此 RSA 并不常用。
请注意,您还可以创建一个密钥对,其中私钥保留在密钥容器中,例如密钥库。例如,大多数智能卡的设计方式是私钥永远不会离开设备;它只是在需要时使用。密钥在创建后自动保留。因此,您将无法检索它们的值并将它们转换为 XML。
在没有任何保护的情况下以 Microsoft 专有 XML 格式存储密钥(如问题中的代码中所执行的那样)不是一个好主意。
推荐阅读
- excel - 将 Excel 2016 宏中的变量值复制到 Word 2016 中的新文档
- pandas - Delta Lake:性能挑战
- flutter - Flutter - 动态 TextEditingControllers,绑定到另一个输入字段
- database - 在 mongodb 中执行更新操作时“或”中每个条件的结果
- sql - SQL:根据另一列提取具有不同条件的行?
- python - Ansible 可以从 localhost 但不能从 docker 容器连接到 windows 机器
- javascript - Javascript - 数组未定义
- java - FireTV 应用程序中的 Exoplayer CC(隐藏式字幕)问题:被亚马逊商店拒绝
- r - 在r中的多列中计算0s 1s和2s
- angular - 无需重新加载页面的角度加载内容