public class AesHelper
{
#region AES 加密
/// <summary>
/// AES 加密
/// </summary>
/// <param name="str">明文(待加密)</param>
/// <param name="key">密文</param>
/// <returns></returns>
public static string Encrypt(string str, string key)
{
if (string.IsNullOrEmpty(str)) return null;
key = GetKey(key);
Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
RijndaelManaged rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
ICryptoTransform cTransform = rm.CreateEncryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
#endregion
#region AES 解密
/// <summary>
/// AES 解密
/// </summary>
/// <param name="str">明文(待解密)</param>
/// <param name="key">密文</param>
/// <returns></returns>
public static string Decrypt(string str, string key)
{
try
{
if (string.IsNullOrEmpty(str)) return null;
key = GetKey(key);
Byte[] toEncryptArray = Convert.FromBase64String(str);
RijndaelManaged rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
ICryptoTransform cTransform = rm.CreateDecryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Encoding.UTF8.GetString(resultArray);
}
catch
{
return string.Empty;
}
}
#endregion
#region 处理KEY AES需要32位加密key
/// <summary>
/// 处理KEY AES需要32位加密key
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
private static string GetKey(string key)
{
if (key.Length > 32)
{
key = key.Substring(0, 32);
}
else if (key.Length < 32)
{
var count = 32 - key.Length;
for (int i = 0; i < count; i++)
{
key += "0";
}
}
return key;
}
#endregion
}