public class RsaHelper
{
/// <summary>
/// 创建RSA公钥私钥
/// </summary>
public static Dictionary<string, string> CreateRSAKey()
{
var dic = new Dictionary<string, string>();
//创建RSA对象
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
//生成RSA[公钥私钥]
string privateKey = rsa.ToXmlString(true);
string publicKey = rsa.ToXmlString(false);
dic.Add("PublicKey", publicKey);
dic.Add("PrivateKey", privateKey);
return dic;
}
/// <summary>
/// 使用公钥RSA实现加密
/// </summary>
/// <param name="data">加密数据</param>
/// <param name="publicKey">公钥</param>
/// <returns></returns>
public static string RSAEncrypt(string data, string publicKey)
{
//C#默认只能使用[公钥]进行加密(想使用[公钥解密]可使用第三方组件BouncyCastle来实现)
//创建RSA对象并载入[公钥]
RSACryptoServiceProvider rsaPublic = new RSACryptoServiceProvider();
rsaPublic.FromXmlString(publicKey);
//对数据进行加密
byte[] publicValue = rsaPublic.Encrypt(Encoding.UTF8.GetBytes(data), false);
string publicStr = Convert.ToBase64String(publicValue);//使用Base64将byte转换为string
return publicStr;
}
/// <summary>
/// 使用私钥RSA实现解密
/// </summary>
/// <param name="data">解密数据</param>
/// <param name="privateKey">私钥</param>
/// <returns></returns>
public static string RSADecrypt(string data, string privateKey)
{
//C#默认只能使用[私钥]进行解密(想使用[私钥加密]可使用第三方组件BouncyCastle来实现)
//创建RSA对象并载入[私钥]
RSACryptoServiceProvider rsaPrivate = new RSACryptoServiceProvider();
rsaPrivate.FromXmlString(privateKey);
//对数据进行解密
//byte[] privateValue = rsaPrivate.Decrypt(Convert.FromBase64String(data), false);//使用Base64将string转换为byte
byte[] bytes = Convert.FromBase64String(data);
byte[] privateValue = rsaPrivate.Decrypt(bytes, false);//使用Base64将string转换为byte
string privateStr = Encoding.UTF8.GetString(privateValue);
return privateStr;
}
}
本文介绍了如何在C#中使用RSAHelper类创建公钥和私钥,以及如何利用RSA进行数据加密(仅公钥可用,私钥需外部库BouncyCastle支持)和解密操作。
1837

被折叠的 条评论
为什么被折叠?



