C#RSACryptoServiceProvider加密解密RSA加密解密

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C#RSACryptoServiceProvider加密解密RSA加密解密
什么是RSA:RSA公开密钥密码体制。

所谓的公开密钥密码体制就是使⽤不同的加密密钥与解密密钥,是⼀种“由已知加密密钥推导出解密密钥在计算上是不可⾏的”密码体制。

下附代码,在控制台中粘贴在启动类即可使⽤,需引⽤(using System.Security.Cryptography)命名空间 ;
///<summary>
///获取加密所使⽤的key,RSA算法是⼀种⾮对称密码算法,所谓⾮对称,就是指该算法需要⼀对密钥,使⽤其中⼀个加密,则需要⽤另⼀个才能解密。

///</summary>
public static void GetKey()
{
string PublicKey = string.Empty;
string PrivateKey = string.Empty;
RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider();
PublicKey = rSACryptoServiceProvider.ToXmlString(false); // 获取公匙,⽤于加密
PrivateKey = rSACryptoServiceProvider.ToXmlString(true); // 获取公匙和私匙,⽤于解密
//Console.WriteLine("PublicKey is {0}", PublicKey); // 输出公匙
//Console.WriteLine("PrivateKey is {0}", PrivateKey); // 输出密匙
// 密匙中含有公匙,公匙是根据密匙进⾏计算得来的。

using (StreamWriter streamWriter = new StreamWriter("PublicKey.xml"))
{
streamWriter.Write(rSACryptoServiceProvider.ToXmlString(false));// 将公匙保存到运⾏⽬录下的PublicKey
}
using (StreamWriter streamWriter = new StreamWriter("PrivateKey.xml"))
{
streamWriter.Write(rSACryptoServiceProvider.ToXmlString(true)); // 将公匙&私匙保存到运⾏⽬录下的PrivateKey
}
}
///<summary>
///加密
///</summary>
///<param name="str">需要加密的明⽂</param>
///<returns></returns>
private static byte[] Encryption(string str)
{
RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider();
using (StreamReader streamReader = new StreamReader("PublicKey.xml")) // 读取运⾏⽬录下的PublicKey.xml
{
rSACryptoServiceProvider.FromXmlString(streamReader.ReadToEnd()); // 将公匙载⼊进RSA实例中
}
byte[] buffer = Encoding.UTF8.GetBytes(str); // 将明⽂转换为byte[]
// 加密后的数据就是⼀个byte[] 数组,可以以⽂件的形式保存或别的形式(⽹上很多教程,使⽤Base64进⾏编码化保存)
byte[] EncryptBuffer = rSACryptoServiceProvider.Encrypt(buffer, false); // 进⾏加密
//string EncryptBase64 = Convert.ToBase64String(EncryptBuffer); // 如果使⽤base64进⾏明⽂化,在解密时需要再次将base64 转换为byte[]
//Console.WriteLine(EncryptBase64);
return EncryptBuffer;
}
private static string Decrypt(byte[] buffer)
{
RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider();
using (StreamReader streamReader = new StreamReader("PrivateKey.xml")) // 读取运⾏⽬录下的PrivateKey.xml
{
rSACryptoServiceProvider.FromXmlString(streamReader.ReadToEnd()); // 将私匙载⼊进RSA实例中
}
// 解密后得到⼀个byte[] 数组
byte[] DecryptBuffer = rSACryptoServiceProvider.Decrypt(buffer, false); // 进⾏解密
string str = Encoding.UTF8.GetString(DecryptBuffer); // 将byte[]转换为明⽂
return str;
}。

相关文档
最新文档