C#中使用DES和AES加密解密

C#中使用DES和AES加密解密
2008-01-12 09:37

using System; using System.Text; using System.Security.Cryptography; using System.IO; namespace MyCryptography {     /// <summary>     /// DES加密解密     /// </summary>     public class DES     {         /// <summary>         /// 獲取密鑰         /// </summary>         private static string Key         {             get { return @"P@+#wG+Z"; }         }         /// <summary>         /// 獲取向量         /// </summary>         private static string IV         {             get { return @"L%n67}G/Mk@k%:~Y"; }         }         /// <summary>         /// DES加密         /// </summary>         /// <param name="plainStr">明文字符串</param>         /// <returns>密文</returns>         public static string DESEncrypt(string plainStr)         {             byte[] bKey = Encoding.UTF8.GetBytes(Key);             byte[] bIV = Encoding.UTF8.GetBytes(IV);             byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);             string encrypt = null;             DESCryptoServiceProvider des = new DESCryptoServiceProvider();             try             {                 using (MemoryStream mStream = new MemoryStream())                 {                     using (CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))                     {                         cStream.Write(byteArray, 0, byteArray.Length);                         cStream.FlushFinalBlock();                         encrypt = Convert.ToBase64String(mStream.ToArray());                     }                 }             }             catch { }             des.Clear();             return encrypt;         }         /// <summary>         /// DES解密         /// </summary>         /// <param name="encryptStr">密文字符串</param>         /// <returns>明文</returns>         public static string DESDecrypt(string encryptStr)         {             byte[] bKey = Encoding.UTF8.GetBytes(Key);             byte[] bIV = Encoding.UTF8.GetBytes(IV);             byte[] byteArray = Convert.FromBase64String(encryptStr);             string decrypt = null;             DESCryptoServiceProvider des = new DESCryptoServiceProvider();             try             {                 using (MemoryStream mStream = new MemoryStream())                 {                     using (CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))                     {                         cStream.Write(byteArray, 0, byteArray.Length);                         cStream.FlushFinalBlock();                         decrypt = Encoding.UTF8.GetString(mStream.ToArray());                     }                 }             }             catch { }             des.Clear();             return decrypt;         }     }     /// <summary>     /// AES加密解密     /// </summary>     public class AES     {         /// <summary>         /// 獲取密鑰         /// </summary>         private static string Key         {             get { return @")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M"; }         }         /// <summary>         /// 獲取向量         /// </summary>         private static string IV         {             get { return @"L+/~f4,Ir)b$=pkf"; }         }         /// <summary>         /// AES加密         /// </summary>         /// <param name="plainStr">明文字符串</param>         /// <returns>密文</returns>         public static string AESEncrypt(string plainStr)         {             byte[] bKey = Encoding.UTF8.GetBytes(Key);             byte[] bIV = Encoding.UTF8.GetBytes(IV);             byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);             string encrypt = null;             Rijndael aes = Rijndael.Create();             try             {                 using (MemoryStream mStream = new MemoryStream())                 {                     using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))                     {                         cStream.Write(byteArray, 0, byteArray.Length);                         cStream.FlushFinalBlock();                         encrypt = Convert.ToBase64String(mStream.ToArray());                     }                 }             }             catch { }             aes.Clear();             return encrypt;         }         /// <summary>         /// AES加密         /// </summary>         /// <param name="plainStr">明文字符串</param>         /// <param name="returnNull">加密失敗時是否返回 null,false 返回 String.Empty</param>         /// <returns>密文</returns>         public static string AESEncrypt(string plainStr, bool returnNull)         {             string encrypt = AESEncrypt(plainStr);             return returnNull ? encrypt : (encrypt == null ? String.Empty : encrypt);         }         /// <summary>         /// AES解密         /// </summary>         /// <param name="encryptStr">密文字符串</param>         /// <returns>明文</returns>         public static string AESDecrypt(string encryptStr)         {             byte[] bKey = Encoding.UTF8.GetBytes(Key);             byte[] bIV = Encoding.UTF8.GetBytes(IV);             byte[] byteArray = Convert.FromBase64String(encryptStr);             string decrypt = null;             Rijndael aes = Rijndael.Create();             try             {                 using (MemoryStream mStream = new MemoryStream())                 {                     using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))                     {                         cStream.Write(byteArray, 0, byteArray.Length);                         cStream.FlushFinalBlock();                         decrypt = Encoding.UTF8.GetString(mStream.ToArray());                     }                 }             }             catch { }             aes.Clear();             return decrypt;         }         /// <summary>         /// AES解密         /// </summary>         /// <param name="encryptStr">密文字符串</param>         /// <param name="returnNull">解密失敗時是否返回 null,false 返回 String.Empty</param>         /// <returns>明文</returns>         public static string AESDecrypt(string encryptStr, bool returnNull)         {             string decrypt = AESDecrypt(encryptStr);             return returnNull ? decrypt : (decrypt == null ? String.Empty : decrypt);         }     } }
相關文章
相關標籤/搜索