/// <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();
}
}
}
}
}
}