在.NET中简单的rsa加密/解密?

Sim*_*mon 8 .net c# encryption rsa

我想生成一对键,只需键入以下内容:

Rsa.Decrypt(data, privateKey); 
Rsa.Encrypt(data, publicKey);
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来做到这一点?我知道有类似RsaCryptoServiceProvider但它需要XML来创建适当的对象.我想将私钥/公钥存储为简单的字符串(而不是xml),我将把它放在web.config中:

<appSettings>
    <add key="MyPublicKey" value"...."/>
    <add key="MyrivateKey" value"...."/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

后来我会加密web.config所以一切都会安全(IIS会处理它).是否有可能以这种方式做到这一点?

gal*_*arm 10

使用首选密钥大小(512/1024/2048 ...)创建RSACryptoServiceProvider对象:

int keySize = 1024;
m_ServiceProvider = new RSACryptoServiceProvider(keySize);
Run Code Online (Sandbox Code Playgroud)

或者使用默认大小:

m_ServiceProvider = new RSACryptoServiceProvider();
Run Code Online (Sandbox Code Playgroud)

然后使用ExportParameters获取字节数组所需的内容,例如获取公钥使用的Modulus部分:

byte[] publicModulus = m_ServiceProvider.ExportParameters(true).Modulus;
Run Code Online (Sandbox Code Playgroud)

我在ExportParameters中传递了一个真值,因为您希望访问私钥参数.

然后你只需要将字节数组转换为字符串:

string publicModulusStr = Convert.ToBase64String(modulus);
Run Code Online (Sandbox Code Playgroud)

稍后,当您想要从web.config读取并重新创建RSACryptoServiceProvider对象时,使用存储在文件中的文本创建一个RSAParameters对象,然后将RSAParameters传递给RSACryptoServiceProvider构造函数.

还有一个注意事项:您保存的web.config文件应保持非常私密,因为您将私钥存储在其中.