源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#实现对AES加密和解密的方法

  • 时间:2021-10-01 02:06 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#实现对AES加密和解密的方法
AES简介 AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。 AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据 的位数与输入数据相同。以下是我经过整理的代码,希望对大家有所帮助:
[u]复制代码[/u] 代码如下:
/// <summary> /// ASE加解密 /// </summary> public class AESHelper {     /// <summary>     /// 获取密钥     /// </summary>     private static string Key     {         get         {             return "abcdef1234567890";    ////必须是16位         }     }     //默认密钥向量     private static byte[] _key1 = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };     /// <summary>     /// AES加密算法     /// </summary>     /// <param name="plainText">明文字符串</param>     /// <returns>将加密后的密文转换为Base64编码,以便显示</returns>     public static string AESEncrypt(string plainText)     {         //分组加密算法         SymmetricAlgorithm des = Rijndael.Create();         byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组         //设置密钥及密钥向量         des.Key = Encoding.UTF8.GetBytes(Key);         des.IV = _key1;         byte[] cipherBytes = null;         using (MemoryStream ms = new MemoryStream())         {             using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))             {                 cs.Write(inputByteArray, 0, inputByteArray.Length);                 cs.FlushFinalBlock();                 cipherBytes = ms.ToArray();//得到加密后的字节数组                 cs.Close();                 ms.Close();             }         }         return Convert.ToBase64String(cipherBytes);     }     /// <summary>     /// AES解密     /// </summary>     /// <param name="cipherText">密文字符串</param>     /// <returns>返回解密后的明文字符串</returns>     public static string AESDecrypt(string showText)     {         byte[] cipherText = Convert.FromBase64String(showText);         SymmetricAlgorithm des = Rijndael.Create();         des.Key = Encoding.UTF8.GetBytes(Key);         des.IV = _key1;         byte[] decryptBytes = new byte[cipherText.Length];         using (MemoryStream ms = new MemoryStream(cipherText))         {             using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read))             {                 cs.Read(decryptBytes, 0, decryptBytes.Length);                 cs.Close();                 ms.Close();             }         }         return Encoding.UTF8.GetString(decryptBytes).Replace("\0", "");   ///将字符串后尾的'\0'去掉     } }
Key的值可以放在config文件中,也可放入数据库中。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部