C# rsa加密算法
时间: 2023-11-08 17:48:17 浏览: 210
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,用于加密和解密数据。C#中提供了对RSA算法的支持。下面是一个简单的示例代码,展示如何使用RSA算法进行加密和解密:
```csharp
using System;
using System.Security.Cryptography;
using System.Text;
public class RSADemo
{
public static void Main()
{
// 创建RSA实例
using (RSA rsa = RSA.Create())
{
try
{
// 生成RSA的公钥和私钥对
RSAParameters publicKey;
RSAParameters privateKey;
rsa.KeySize = 2048; // 设置密钥长度
// 生成密钥对
publicKey = rsa.ExportParameters(false);
privateKey = rsa.ExportParameters(true);
// 要加密的数据
string dataToEncrypt = "Hello, RSA!";
// 加密数据
byte[] encryptedData = EncryptData(Encoding.UTF8.GetBytes(dataToEncrypt), publicKey);
// 解密数据
byte[] decryptedData = DecryptData(encryptedData, privateKey);
// 显示结果
Console.WriteLine("原始数据: {0}", dataToEncrypt);
Console.WriteLine("加密后的数据: {0}", Convert.ToBase64String(encryptedData));
Console.WriteLine("解密后的数据: {0}", Encoding.UTF8.GetString(decryptedData));
}
catch (CryptographicException e)
{
Console.WriteLine(e.Message);
}
}
}
// 使用RSA算法加密数据
public static byte[] EncryptData(byte[] dataToEncrypt, RSAParameters publicKey)
{
using (RSA rsa = RSA.Create())
{
try
{
rsa.ImportParameters(publicKey);
return rsa.Encrypt(dataToEncrypt, RSAEncryptionPadding.OaepSHA256);
}
catch (CryptographicException e)
{
Console.WriteLine(e.Message);
return null;
}
}
}
// 使用RSA算法解密数据
public static byte[] DecryptData(byte[] dataToDecrypt, RSAParameters privateKey)
{
using (RSA rsa = RSA.Create())
{
try
{
rsa.ImportParameters(privateKey);
return rsa.Decrypt(dataToDecrypt, RSAEncryptionPadding.OaepSHA256);
}
catch (CryptographicException e)
{
Console.WriteLine(e.Message);
return null;
}
}
}
}
```
这个示例代码中,我们使用`RSA.Create()`创建了一个RSA实例,并设置了密钥长度为2048位。然后,调用`ExportParameters()`方法生成公钥和私钥对。接下来,我们使用公钥加密数据,然后再用私钥解密数据。最后,我们将结果打印到控制台上。
需要注意的是,RSA算法对于较大的数据加密耗时较长,因此通常会使用RSA算法加密对称加密算法(如AES)的密钥,从而提高加密效率。
阅读全文