C# 实现 AES 加密算法
开篇日常立个flag....
代码
命名空间 System.Security.Cryptography
public enum enmKeyBit
{
KeyBit128 = 128,
KeyBit192 = 192,
KeyBit256 = 256,
}
public class EncryptNew
{
///
/// AES ECB模式 加密
///
/// 明文
/// 密钥
/// 密钥位数
///
public static string AESEncrypt(String data, String key, enmKeyBit keyBit = enmKeyBit.KeyBit256)
{
if (string.IsNullOrEmpty(data))
{
return string.Empty;
}
try
{
int intKeyBit = (int)keyBit;
RijndaelManaged aes = new RijndaelManaged();
byte[] bytsData = Encoding.UTF8.GetBytes(data);
byte[] bytsKey = new Byte[intKeyBit / 8];
Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bytsKey.Length)), bytsKey, bytsKey.Length);
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
aes.KeySize = intKeyBit;
aes.Key = bytsKey;
//aes.IV = iv;
ICryptoTransform ctf = aes.CreateEncryptor();
byte[] bytsResult = ctf.TransformFinalBlock(bytsData, 0, bytsData.Length);
return Convert.ToBase64String(bytsResult);
}
catch
{
return string.Empty;
}
}
///
/// AES ECB模式 解密
///
/// 密文
/// 密钥
/// 密钥位数
///
public static string AESDecrypt(String data, String key, enmKeyBit keyBit = enmKeyBit.KeyBit256)
{
if (string.IsNullOrEmpty(data))
{
return string.Empty;
}
try
{
int intKeyBit = (int)keyBit;
RijndaelManaged aes = new RijndaelManaged();
byte[] bytsData = Convert.FromBase64String(data);
byte[] bytsKey = new Byte[intKeyBit / 8];
Array.Copy(Encoding.UTF8.GetBytes(key.PadRight(bytsKey.Length)), bytsKey, bytsKey.Length);
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
aes.KeySize = intKeyBit;
aes.Key = bytsKey;
//aes.IV = iv;
ICryptoTransform ctf = aes.CreateDecryptor();
byte[] bytsResult = ctf.TransformFinalBlock(bytsData, 0, bytsData.Length);
return UTF8Encoding.UTF8.GetString(bytsResult);
}
catch
{
return string.Empty;
}
}
}