【问题标题】:How to encrypt generated RSA private key and decrypt in c#如何在c#中加密生成的RSA私钥并解密
【发布时间】:2017-05-19 00:35:24
【问题描述】:

我看过有关使用私钥/公钥加密/解密数据的文章。我想做的只是加密已经存储在文件中的生成的 RSA 私钥。我一直在广泛浏览以了解如何做到这一点,但没有运气。我认为我的问题是一个不寻常的问题。请帮忙!

【问题讨论】:

  • 您确定要加密私钥吗?你用什么来加密它——另一个公钥/私钥?感觉可能是XY Problem
  • @詹姆斯。我开发了一个灯光控制应用程序。第一次在客户端部署应用程序,我将以加密格式发送私有 RSA 密钥,并通过电子邮件将加密密码短语发送给客户端进行验证。当客户端为初始设置输入密码时,如果该密码匹配,应用程序将解密加密文件并与服务器建立连接以控制灯。最初,认为 DPAPI 满足我的要求,但加密和解密过程仅取决于当前用户。所以我正在寻找加密算法来加密 RSA 密钥。请帮助。

标签: c# cryptography


【解决方案1】:

首先,您需要一个 *Key 派生函数,将您的密码转换为可用于加密您的私钥的对称密钥。如果您只使用 .NET 框架,则应为此使用 Rfc2898DeriveBytes 类。如果您能够使用 BouncyCastle,则首选 SCrypt

然后您可以加密您的密钥,最好使用AES 算法。

一些可用的代码示例可以在this answer中找到

【讨论】:

  • @mat.Thanks mat!