C# RSA 公钥加密
时间: 2024-09-24 09:01:02 浏览: 42
在C#中,RSA (Rivest-Shamir-Adleman)是一种常用的非对称加密算法,它由一对密钥组成,包括公钥和私钥。公钥用于加密数据,任何人都可以使用它;而私钥则用于解密数据,只有数据的接收者拥有。
以下是使用C#中的System.Security.Cryptography命名空间中的RSA类进行公钥加密的基本步骤:
1. **生成密钥对**:
```csharp
using RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
string publicKeyXml = rsa.ToXmlString(false); // 公钥
string privateKeyXml = rsa.ToXmlString(true); // 私钥
```
2. **加载公钥进行加密**:
```csharp
var cryptoProvider = new RSACryptoServiceProvider();
cryptoProvider.FromXmlString(publicKeyXml);
byte[] encryptedData = cryptoProvider.Encrypt(messageToEncrypt, false);
```
`messageToEncrypt`是要加密的数据,`false`表示使用RSAEES-OAEP Padding(如果需要更安全的加密模式,可以设置为true)。
3. **接收方使用私钥解密**:
```csharp
cryptoProvider = new RSACryptoServiceProvider();
cryptoProvider.FromXmlString(privateKeyXml);
byte[] decryptedData = cryptoProvider.Decrypt(encryptedData, false);
string originalMessage = Encoding.UTF8.GetString(decryptedData);
```
阅读全文