1.CryptoHelper加密解密帮助类
/// <summary> /// 加密解密帮助类 /// </summary> public class CryptoHelper { private readonly string IV = "SuFjcEmp/TE="; private readonly string Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT"; public CryptoHelper() { } /// <summary> /// 获取加密服务类 /// </summary> /// <returns></returns> private TripleDESCryptoServiceProvider GetCryptoProvider() { TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider(); provider.IV = Convert.FromBase64String(IV); provider.Key = Convert.FromBase64String(Key); return provider; } /// <summary> /// 获取加密后的字符串 /// </summary> /// <param name="inputValue">输入值.</param> /// <returns></returns> public string GetEncryptedValue(string inputValue) { TripleDESCryptoServiceProvider provider = this.GetCryptoProvider(); // 创建内存流来保存加密后的流 MemoryStream mStream = new MemoryStream(); // 创建加密转换流 CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(), CryptoStreamMode.Write); // 使用UTF8编码获取输入字符串的字节。 byte[] toEncrypt = new UTF8Encoding().GetBytes(inputValue); // 将字节写到转换流里面去。 cStream.Write(toEncrypt, 0, toEncrypt.Length); cStream.FlushFinalBlock(); // 在调用转换流的FlushFinalBlock方法后,内部就会进行转换了,此时mStream就是加密后的流了。 byte[] ret = mStream.ToArray(); // Close the streams. cStream.Close(); mStream.Close(); //将加密后的字节进行64编码。 return Convert.ToBase64String(ret); } /// <summary> /// 获取解密后的值 /// </summary> /// <param name="inputValue">经过加密后的字符串.</param> /// <returns></returns> public string GetDecryptedValue(string inputValue) { TripleDESCryptoServiceProvider provider = this.GetCryptoProvider(); byte[] inputEquivalent = Convert.FromBase64String(inputValue); // 创建内存流保存解密后的数据 MemoryStream msDecrypt = new MemoryStream(); // 创建转换流。 CryptoStream csDecrypt = new CryptoStream(msDecrypt, provider.CreateDecryptor(), CryptoStreamMode.Write); csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length); csDecrypt.FlushFinalBlock(); csDecrypt.Close(); //获取字符串。 return new UTF8Encoding().GetString(msDecrypt.ToArray()); }
2.AES加密解密
//AES加密函数 public static string Encrypt(string toEncrypt) { byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012"); byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = CipherMode.ECB; rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray, 0, resultArray.Length); } //AES解密函数 public static string Decrypt(string toDecrypt) { byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012"); byte[] toEncryptArray = Convert.FromBase64String(toDecrypt); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = CipherMode.ECB; rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return UTF8Encoding.UTF8.GetString(resultArray); }
3.DES加密解密
//加密密钥 private static byte[] DESKey=new byte[]{11,23,93,102,72,41,18,12}; //解密密钥 private static byte[] DESIV=new byte[]{75,158,46,97,78,57,17,36}; public string Encode(string Encode_String) { DESCryptoServiceProvider objDES=new DESCryptoServiceProvider(); MemoryStream objMemoryStream=new MemoryStream(); CryptoStream objCryptoStream=new CryptoStream(objMemoryStream,objDES.CreateEncryptor(DESKey,DESIV),CryptoStreamMode.Write); StreamWriter objStreamWriter=new StreamWriter(objCryptoStream); objStreamWriter.Write(Encode_String); objStreamWriter.Flush(); objCryptoStream.FlushFinalBlock(); objMemoryStream.Flush(); return Convert.ToBase64String(objMemoryStream.GetBuffer(),0,(int)objMemoryStream.Length); } public string Decode(string Encode_String) { DESCryptoServiceProvider objDES=new DESCryptoServiceProvider(); byte[] Input=Convert.FromBase64String(Encode_String); MemoryStream objMemoryStream=new MemoryStream(Input); CryptoStream objCryptoStream=new CryptoStream (objMemoryStream,objDES.CreateDecryptor(DESKey,DESIV),CryptoStreamMode.Read); StreamReader objStreamReader=new StreamReader(objCryptoStream); return objStreamReader.ReadToEnd(); }