static void AesEncrypt(string toEncrypt,byte[] key, byte[] iv)
{
int keyArrayCount = 32, ivArrayCount = 16;
List<byte> keyList = new List<byte>(key);
while (keyList.Count < keyArrayCount)
{
keyList.Add(0x00);
}
while (keyList.Count > keyArrayCount)
{
keyList.RemoveAt(keyList.Count-1);
}
List<byte> ivList = new List<byte>(iv);
while (ivList.Count < ivArrayCount)
{
ivList.Add(0x00);
}
while (ivList.Count > ivArrayCount)
{
ivList.RemoveAt(ivList.Count-1);
}
Console.WriteLine("使用AES加密: " + toEncrypt);
byte[] textbyte = UTF8Encoding.UTF8.GetBytes(toEncrypt);
Console.WriteLine("要加密的文字的16进制:{0}", BitConverter.ToString(textbyte).Replace("-", ""));
System.Security.Cryptography.AesCryptoServiceProvider aes = new System.Security.Cryptography.AesCryptoServiceProvider();
aes.Key = keyList.ToArray();
aes.IV = ivList.ToArray();
Console.WriteLine("Key:{0}", BitConverter.ToString(aes.Key).Replace("-", ""));
Console.WriteLine("IV:{0}", BitConverter.ToString(aes.IV).Replace("-", ""));
ICryptoTransform trans = aes.CreateEncryptor();
byte[] etextbyte = trans.TransformFinalBlock(textbyte, 0, textbyte.Length);
Console.WriteLine("加密后16进制:{0}", BitConverter.ToString(etextbyte).Replace("-", ""));
trans = aes.CreateDecryptor();
byte[] detextbyte = trans.TransformFinalBlock(etextbyte, 0, etextbyte.Length);
Console.WriteLine("解密后的16进制:{0}", BitConverter.ToString(detextbyte).Replace("-", ""));
Console.WriteLine("解密后的文本:{0}", Encoding.UTF8.GetString(detextbyte));
}