C# 128位AES 加密解密 (转)

时间:2022-02-02 00:24:38

/// AES加密
2         /// </summary>
3         /// <param>输入的数据</param>
4         /// <param>向量128位</param>
5         /// <param>加密密钥</param>
6         /// <returns></returns>
7         public static byte[] AESEncrypt(byte[] inputdata, byte[] iv, string strKey)
8         {
9             //分组加密算法  
10             SymmetricAlgorithm des = Rijndael.Create();
11             byte[] inputByteArray = inputdata;//得到需要加密的字节数组      
12             //设置密钥及密钥向量
13             des.Key = Encoding.UTF8.GetBytes(strKey.Substring(0, 32));
14             des.IV = iv;
15             using (MemoryStream ms = new MemoryStream())
16             {
17                 using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
18                 {
19                     cs.Write(inputByteArray, 0, inputByteArray.Length);
20                     cs.FlushFinalBlock();
21                     byte[] cipherBytes = ms.ToArray();//得到加密后的字节数组  
22                     cs.Close();
23                     ms.Close();                  
24                     return cipherBytes;
25                 }
26             }
27         }
28
29
30         /// <summary>
31         /// AES解密
32         /// </summary>
33         /// <param>输入的数据</param>
34         /// <param>向量128</param>
35         /// <param>key</param>
36         /// <returns></returns>
37         public static byte[] AESDecrypt(byte[] inputdata, byte[] iv, string strKey)
38         {
39             SymmetricAlgorithm des = Rijndael.Create();
40             des.Key = Encoding.UTF8.GetBytes(strKey.Substring(0, 32));
41             des.IV = iv;
42             byte[] decryptBytes = new byte[inputdata.Length];
43             using (MemoryStream ms = new MemoryStream(inputdata))
44             {
45                 using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read))
46                 {
47                     cs.Read(decryptBytes, 0, decryptBytes.Length);
48                     cs.Close();
49                     ms.Close();
50                 }
51             }
52             return decryptBytes;
53         }