我想生成一对键,只需键入:
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将处理它)。是否有可能以这种方式做到这一点?
答案 0 :(得分:10)
使用您的首选密钥大小(512/1024/2048 ...)创建一个RSACryptoServiceProvider对象:
int keySize = 1024;
m_ServiceProvider = new RSACryptoServiceProvider(keySize);
或使用默认大小:
m_ServiceProvider = new RSACryptoServiceProvider();
然后使用ExportParameters获取字节数组所需的内容,例如获取公钥使用的Modulus部分:
byte[] publicModulus = m_ServiceProvider.ExportParameters(true).Modulus;
我在ExportParameters中传递了一个真值,因为你想要访问私钥参数。
然后你只需要将字节数组转换为字符串:
string publicModulusStr = Convert.ToBase64String(modulus);
稍后,当您想要从web.config中读取并重新创建RSACryptoServiceProvider对象时,使用存储在文件中的文本创建一个RSAParameters对象,然后将RSAParameters传递给RSACryptoServiceProvider构造函数。
请注意:您保存的web.config文件应该保密,因为您将私钥存储在内部。