什么是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; }
C# RSACryptoServiceProvider 加密解密 RSA 加密解密
原文:https://www.cnblogs.com/smallshu/p/10854160.html