///
/// AES加密算法
///
///
明文字符串
///
将加密后的密文转换为Base64编码,以便显示
public static byte[] AESEncrypt(string plainText, byte[] _key1)
{
//分组加密算法
SymmetricAlgorithm des = Rijndael.Create();
des.Padding = PaddingMode.PKCS7;
des.Mode = CipherMode.CBC;
byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组
des.KeySize = 128;
des.BlockSize = 128;
//设置密钥及密钥向量
des.Key = _key1;
des.IV = _key1;
byte[] cipherBytes = null;
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cipherBytes = ms.ToArray();//得到加密后的字节数组
cs.Close();
ms.Close();
}
}
return cipherBytes;
}
///
/// AES解密
///
///
密文字符串
///
明文
public static string AESDecrypt(byte[] encryptStr, byte[] _key1)
{
byte[] bKey = _key1;// Encoding.UTF8.GetBytes(Key);
byte[] bIV = _key1;// Encoding.UTF8.GetBytes(IV);
byte[] byteArray = encryptStr;//Convert.FromBase64String(encryptStr);
string decrypt = null;
Rijndael aes = Rijndael.Create();
aes.KeySize = 128;
aes.BlockSize = 128;
aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.CBC;
try
{
using (MemoryStream mStream = new MemoryStream())
{
using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))
{
cStream.Write(byteArray, 0, byteArray.Length);
cStream.FlushFinalBlock();
decrypt = Encoding.UTF8.GetString(mStream.ToArray());
}
}
}
catch { }
aes.Clear();
return decrypt;
}