using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace WebSite.ClassLib
{
public class AESHelper
{
#region Aes加密
/// <summary>
/// Aes加密
/// </summary>
/// <param name="data">明文</param>
/// <param name="bkey">密钥</param>
/// <returns>解密后的字符串</returns>
public static string AesEncrypt(string data, Byte[] bkey)
{
MemoryStream mStreram = new MemoryStream();
RijndaelManaged aes = new RijndaelManaged();
byte[] plainbyets = Encoding.UTF8.GetBytes(data);
//Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bkey.Length)), bkey, bkey.Length);
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
aes.KeySize = 128;
aes.Key = bkey;
CryptoStream crypttostream = new CryptoStream(mStreram, aes.CreateEncryptor(), CryptoStreamMode.Write);
try
{
crypttostream.Write(plainbyets, 0, plainbyets.Length);
crypttostream.FlushFinalBlock();
return Convert.ToBase64String(mStreram.ToArray());
}
finally
{
crypttostream.Close();
mStreram.Close();
aes.Clear();
}
}
#endregion
#region AES解密
/// <summary>
/// AES解密
/// </summary>
/// <param name="data">被加密的明文</param>
/// <param name="bkey">密钥</param>
/// <returns>明文</returns>
public static string AESDecrypt(String data, Byte[] bkey)
{
Byte[] encryptedBytes = Convert.FromBase64String(data);
// Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bkey.Length)), bkey, bkey.Length);
MemoryStream mStream = new MemoryStream(encryptedBytes);
RijndaelManaged aes = new RijndaelManaged();
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
aes.KeySize = 128;
aes.Key = bkey;
CryptoStream cryptoStream = new CryptoStream(mStream, aes.CreateDecryptor(), CryptoStreamMode.Read);
try
{
byte[] tmp = new byte[encryptedBytes.Length + 32];
int len = cryptoStream.Read(tmp, 0, encryptedBytes.Length + 32);
byte[] ret = new byte[len];
Array.Copy(tmp, 0, ret, 0, len);
return Encoding.UTF8.GetString(ret);
}
finally
{
cryptoStream.Close();
mStream.Close();
aes.Clear();
}
}
#endregion
}
}