using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { public class Rsa { /// <summary> /// 生成key 方法1 /// </summary> /// <returns></returns> public static (string publickey, string privateKey) GetBase64keys() { RSACryptoServiceProvider rSA = new RSACryptoServiceProvider(); string publicKey = Convert.ToBase64String(rSA.ExportCspBlob(false)); string privateKey = Convert.ToBase64String(rSA.ExportCspBlob(false)); return (publickey: publicKey, privateKey: privateKey); } /// <summary> /// 生成key 方法2 /// </summary> /// <returns></returns> public static (string publickey, string privateKey) GetToXmlkeys() { RSACryptoServiceProvider rSA = new RSACryptoServiceProvider(); string publicKey = rSA.ToXmlString(false); string privateKey = rSA.ToXmlString(true); return (publickey: publicKey, privateKey: privateKey); } public static string EncryptByBase64(string privateKey, string text) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.ImportCspBlob(Convert.FromBase64String(privateKey)); var bytes = Encoding.UTF8.GetBytes(text); var result = rsa.Encrypt(bytes, false); return Encoding.UTF8.GetString(result); } public static string DecryptByBase64(string publicKey, string text) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.ImportCspBlob(Convert.FromBase64String(publicKey)); var bytes = Encoding.UTF8.GetBytes(text); var result = rsa.Decrypt(bytes, false); return Encoding.UTF8.GetString(result); } } }