C#之AES256位加密解密

时间:2021-12-01 18:29:08

密码学中的高级加密标准(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();


        }