C#之AES256位加密解密

来源:互联网 发布:cs1.5fps优化器 编辑:程序博客网 时间:2024/05/16 10:27

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

AES加密代码

复制代码
/// <summary>        /// AES加密 //转载请注明来自 http://www.shang11.com        /// </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();        }
复制代码

注意事项

密钥必须是32个字符(非中文),换句话说每个字符只能占1Byte。

0 0
原创粉丝点击