我想生成一对 key ,然后输入如下内容:
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 将处理它)。是否可以那样做?
最佳答案
使用您首选的 key 大小(512/1024/2048 ...)创建一个 RSACryptoServiceProvider 对象:
int keySize = 1024;
m_ServiceProvider = new RSACryptoServiceProvider(keySize);
或者使用默认大小:
m_ServiceProvider = new RSACryptoServiceProvider();
然后使用 ExportParameters 在字节数组中获取您需要的内容,例如获取公钥的模数部分使用:
byte[] publicModulus = m_ServiceProvider.ExportParameters(true).Modulus;
我在 ExportParameters 中传递了一个真值,因为您想要访问私钥参数。
然后你只需要将字节数组转换为字符串:
string publicModulusStr = Convert.ToBase64String(modulus);
稍后,当您想要从 web.config 读取并重新创建 RSACryptoServiceProvider 对象时,使用您存储在文件中的文本创建一个 RSAParameters 对象,然后将 RSAParameters 传递给 RSACryptoServiceProvider 构造函数。
请注意:您保存的 web.config 文件应保持非常私密,因为您将私钥存储在其中。
关于c# - .NET 中的简单 rsa 加密/解密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592990/