C# AES 128加密,解密示例
/// <summary> /// AES加密 /// </summary> /// <param name="clearTxt"></param> /// <returns></returns> public static string AesEncrypt(string clearTxt) { string secretKey = "I15TMSLO0KXUWTHO"; byte[] keyBytes = Encoding.UTF8.GetBytes(secretKey); using (RijndaelManaged cipher = new RijndaelManaged()) { cipher.Mode = CipherMode.CBC; cipher.Padding = PaddingMode.PKCS7; cipher.KeySize = 128; cipher.BlockSize = 128; cipher.Key = keyBytes; cipher.IV = keyBytes; byte[] valueBytes = Encoding.UTF8.GetBytes(clearTxt); byte[] encrypted; using (ICryptoTransform encryptor = cipher.CreateEncryptor()) { using (MemoryStream ms = new MemoryStream()) { using (CryptoStream writer = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { writer.Write(valueBytes, 0, valueBytes.Length); writer.FlushFinalBlock(); encrypted = ms.ToArray(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < encrypted.Length; i++) sb.Append(Convert.ToString(encrypted[i], 16).PadLeft(2, '0')); return sb.ToString().ToUpperInvariant(); } } } } } /// <summary> /// AES解密 /// </summary> /// <param name="encrypted"></param> /// <returns></returns> public static string AesDecypt(string encrypted) { string secretKey = "I15TMSLO0KXUWTHO"; byte[] keyBytes = Encoding.UTF8.GetBytes(secretKey); using (RijndaelManaged cipher = new RijndaelManaged()) { cipher.Mode = CipherMode.CBC; cipher.Padding = PaddingMode.PKCS7; cipher.KeySize = 128; cipher.BlockSize = 128; cipher.Key = keyBytes; cipher.IV = keyBytes; List<byte> lstBytes = new List<byte>(); for (int i = 0; i < encrypted.Length; i += 2) lstBytes.Add(Convert.ToByte(encrypted.Substring(i, 2), 16)); using (ICryptoTransform decryptor = cipher.CreateDecryptor()) { using (MemoryStream msDecrypt = new MemoryStream(lstBytes.ToArray())) { using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (StreamReader srDecrypt = new StreamReader(csDecrypt)) { return srDecrypt.ReadToEnd(); } } } } } }