C#之AES256位加密解密

时间:2021-01-01 18:31:39

密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦*采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

 AES加密代码

        /// <summary>
/// AES加密

/// </summary>

/// <param name="encryptStr">明文</param>

/// <param name="key">密钥</param>

/// <returns></returns>

public static string Encrypt(string encryptStr,string key)

{

byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);

byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(encryptStr);


RijndaelManaged rDel = new RijndaelManaged();

rDel.Key = keyArray;

rDel.Mode = CipherMode.ECB;

rDel.Padding = PaddingMode.PKCS7;


ICryptoTransform cTransform = rDel.CreateEncryptor();

byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);


return Convert.ToBase64String(resultArray, 0, resultArray.Length);

}

AES解密代码

        /// <summary>        /// AES解密        /// </summary>        /// <param name="decryptStr">密文</param>        /// <param name="key">密钥</param>        /// <returns></returns>        public static string Decrypt(string decryptStr,string key)        {            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);            byte[] toEncryptArray = Convert.FromBase64String(decryptStr);            RijndaelManaged rDel = new RijndaelManaged();            rDel.Key = keyArray;            rDel.Mode = CipherMode.ECB;            rDel.Padding = PaddingMode.PKCS7;            ICryptoTransform cTransform = rDel.CreateDecryptor();            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);            return UTF8Encoding.UTF8.GetString(resultArray);        }
主程序入口,测试代码

static void Main(string[] args)        {            string encryptStr,decryptStr, key;            key = "ae125efkk4454eeff444ferfkny6oxi8";            encryptStr = "C#AES加密字符串";            Console.WriteLine("==============  256位AES加密  ============\n");            Console.WriteLine("加密前的字符串:"+encryptStr);            Console.WriteLine("密钥:" + key);            Console.WriteLine();            decryptStr = Program.Encrypt(encryptStr,key);            Console.WriteLine("加密后的字符串:" + decryptStr);                        encryptStr = Program.Decrypt(decryptStr, key);            Console.WriteLine("解密后的字符串:" + encryptStr);            Console.ReadKey();        }