AES與RSA加密
阿新 • • 發佈:2018-12-23
AES
RSAusing System; using System.Text; using System.Security.Cryptography; using System.IO; namespace winfAESEncryptDecrypt { public class AES { /// <summary> /// AES加密 /// </summary> /// <param name="data">待加密的字元資料</param> /// <param name="key">密匙,長度可以為:128位(byte[16]),192位(byte[24]),256位(byte[32])</param> /// <param name="iv">iv向量,長度必須為128位(byte[16])</param> /// <returns>加密後的字元</returns> public string EnAES(string data, string key, string iv) { if (string.IsNullOrEmpty(data)) return data; Aes aes = Aes.Create(); byte[] tmp = null; ICryptoTransform encryptor = aes.CreateEncryptor(Encoding.UTF8.GetBytes(key), Encoding.UTF8.GetBytes(iv)); using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { StreamWriter writer = new StreamWriter(cs); writer.Write(data); writer.Flush(); writer.Close(); } tmp = ms.ToArray(); } return Convert.ToBase64String(tmp); } /// <summary> /// AES解密 /// </summary> /// <param name="data">待加密的字元資料</param> /// <param name="key">密匙,長度可以為:128位(byte[16]),192位(byte[24]),256位(byte[32])</param> /// <param name="iv">iv向量,長度必須為128位(byte[16])</param> /// <returns>加密後的字元</returns> public string DeAES(string data, string key, string iv) { if (string.IsNullOrEmpty(data)) return data; string result = string.Empty; Aes aes = Aes.Create(); ICryptoTransform edcryptor = aes.CreateDecryptor(Encoding.UTF8.GetBytes(key), Encoding.UTF8.GetBytes(iv)); using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(data))) { using (CryptoStream cs = new CryptoStream(ms, edcryptor, CryptoStreamMode.Read)) { StreamReader reader = new StreamReader(cs); result = reader.ReadLine(); reader.Close(); } } aes.Clear(); return result; } } }
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
string privateKey = rsa.ToXmlString(true);
string publicKey = rsa.ToXmlString(false);
using System; using System.Security.Cryptography; using System.Text; namespace winfAESEncryptDecrypt { public class RSA { /// <summary> /// RSA加密 /// </summary> /// <param name="sdata"></param> /// <param name="sPublicKey"></param> /// <returns></returns> public string EnRSA(string sdata, string sPublicKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(sPublicKey); byte[] mybyte = Encoding.UTF8.GetBytes(sdata); string sEnRSA = Convert.ToBase64String(rsa.Encrypt(mybyte, false)); return sEnRSA; } /// <summary> /// RSA解密 /// </summary> /// <param name="sdata"></param> /// <param name="sPrivateKey"></param> /// <returns></returns> public string DeRAS(string sdata, string sPrivateKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(sPrivateKey); byte[] mybyte = Convert.FromBase64String(sdata); string sDeRAS = Encoding.UTF8.GetString(rsa.Decrypt(mybyte, false)); return sDeRAS; } } }