AES加密解密帮助类

AES加密解密帮助类

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Security.Cryptography;
 6 using System.IO;
 7 
 8 namespace Components.Helper.Security
 9 {
10     /// <summary>
11     /// ASE加解密
12     /// </summary>
13     public class AESHelper
14     {
15         /// <summary>
16         /// 获取密钥
17         /// </summary>
18         private static string Key
19         {
20             get
21             {
22                 return "happynewyear2015";    ////必须是16位
23             }
24         }
25         //默认密钥向量 
26         private static byte[] _key1 = { 0x19, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
27         /// <summary>
28         /// AES加密算法
29         /// </summary>
30         /// <param name="plainText">明文字符串</param>
31         /// <returns>将加密后的密文转换为Base64编码,以便显示</returns>
32         public static string AESEncrypt(string plainText)
33         {
34             //分组加密算法
35             SymmetricAlgorithm des = Rijndael.Create();
36             byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组 
37             //设置密钥及密钥向量
38             des.Key = Encoding.UTF8.GetBytes(Key);
39             des.IV = _key1;
40             byte[] cipherBytes = null;
41             using (MemoryStream ms = new MemoryStream())
42             {
43                 using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
44                 {
45                     cs.Write(inputByteArray, 0, inputByteArray.Length);
46                     cs.FlushFinalBlock();
47                     cipherBytes = ms.ToArray();//得到加密后的字节数组
48                     cs.Close();
49                     ms.Close();
50                 }
51             }
52             return Convert.ToBase64String(cipherBytes);
53         }
54         /// <summary>
55         /// AES解密
56         /// </summary>
57         /// <param name="cipherText">密文字符串</param>
58         /// <returns>返回解密后的明文字符串</returns>
59         public static string AESDecrypt(string showText)
60         {
61             var tt = showText.Length;
62             showText = showText.Replace(' ', '+');
63             byte[] cipherText = Convert.FromBase64String(showText);
64             SymmetricAlgorithm des = Rijndael.Create();
65             des.Key = Encoding.UTF8.GetBytes(Key);
66             des.IV = _key1;
67             byte[] decryptBytes = new byte[cipherText.Length];
68             using (MemoryStream ms = new MemoryStream(cipherText))
69             {
70                 using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read))
71                 {
72                     cs.Read(decryptBytes, 0, decryptBytes.Length);
73                     cs.Close();
74                     ms.Close();
75                 }
76             }
77             return Encoding.UTF8.GetString(decryptBytes).Replace("", "");   ///将字符串后尾的''去掉
78         }
79     }
80 }
AESHelper
原文地址:https://www.cnblogs.com/HuberyHu/p/5390896.html