c# - .NET 中的简单 rsa 加密/解密?

标签 c# .net encryption rsa

我想生成一对 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/

相关文章:

c# - XNA:匹配屏幕坐标的正交投影

c# - Ajax.beginform 将空值发布到 Controller

.net - WebApi 中的条件 DataContract 序列化

c# - XML 序列化动态对象

android - 如何查找和播放通过 Lynda.com Android 或 Windows 应用程序下载的视频

c# - Membership.DeleteUser(UserName,true) 不从角色中删除用户

c# - 第二次在c#中调用构造函数

.net - 带有 TransferMode.Streamed 的 WCF NetTcpBinding 在 Windows Server 2019 上无法使用 TLS 1.2 和 SslProtocols.None 在 WCF 绑定(bind)上工作

c++ - CryptoAPI RSA : CryptDecrypt decrypts only at the first time, 其他调用返回 NTE_BAD_DATA

swift - 如何将解密的 UInt8 转换为字符串?