using System.Security.Cryptography;
using System.Text;
namespace LY.App.Common.Cypher
{
public class AESCypherUtil
{
///
/// AES 加密
///
/// 明文
/// 密钥对
/// 密文
public static string Encrypt(string str, string key, string iv)
{
using (var aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = Encoding.UTF8.GetBytes(iv);
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
byte[] strbuffer = Encoding.UTF8.GetBytes(str);
using (var crytTransform = aes.CreateEncryptor(aes.Key, aes.IV))
{
byte[] buffer = crytTransform.TransformFinalBlock(strbuffer, 0, strbuffer.Length);
return Convert.ToBase64String(buffer, 0, buffer.Length);
}
}
}
///
/// AES 解密
///
/// 密文
/// 密钥对
/// 明文
public static string Decrypt(string str, string key, string iv)
{
using (var aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = Encoding.UTF8.GetBytes(iv);
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
byte[] strbuffer = System.Convert.FromBase64String(str);
using (var crytTransform = aes.CreateDecryptor(aes.Key, aes.IV))
{
byte[] buffer = crytTransform.TransformFinalBlock(strbuffer, 0, strbuffer.Length);
return Encoding.UTF8.GetString(buffer);
}
}
}
}
}