【发布时间】:2011-07-06 07:34:50
【问题描述】:
我想生成一对密钥,然后输入如下内容:
Rsa.Decrypt(data, privateKey);
Rsa.Encrypt(data, publicKey);
有什么简单的方法可以做到这一点吗?我知道有类似 RsaCryptoServiceProvider 的东西,但它需要 XML 来创建正确的对象。我想将私钥/公钥存储为简单的字符串(不是 xml),我将把它放在 web.config 中:
<appSettings>
<add key="MyPublicKey" value"...."/>
<add key="MyrivateKey" value"...."/>
</appSettings>
稍后我将加密 web.config,这样一切都会安全(IIS 会处理它)。可以这样吗?
【问题讨论】:
-
不要使用 RSA 加密任意数据。 RSA非常脆弱,需要以正确的方式使用正确的填充等。要加密任意数据,您应该使用 RSA 和块密码的组合。
-
两个问题立即浮现在脑海:首先,您打算如何将公钥安全地传递给消息接收者?请记住,公钥加密仅与密钥管理系统一样安全。其次,将 private 密钥放入像 web.config 这样的知名文件中是不是非常危险?我会将我的私钥存储在专门为敏感数据存储而设计的系统中,而不仅仅是将其填充到 web.config 中。
-
@CodeInChaos:换句话说,使用众所周知的标准,例如 Cryptographic Message Syntax 或 PGP(对于 .net,CMS 可能得到更好的支持)。 @Eric:至于私钥,如果 web.config 得到很好的保护(而且我认为大多数客户不应该访问它),那么它和任何地方一样好。如果您将其存储在安全的地方,则可以防止复制,但无论如何您都需要从自动化系统访问它,那么您将访问密钥/密码存储在哪里? (对于非常安全的系统,您当然可以使用 HSM 或 TPM)。
标签: c# .net encryption rsa