C# 128位AES 加密解密 (转)
/// AES加密
2 /// </summary>
3 /// <param name="inputdata">输入的数据</param>
4 /// <param name="iv">向量128位</param>
5 /// <param name="strKey">加密密钥</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 name="inputdata">输入的数据</param>
34 /// <param name="iv">向量128</param>
35 /// <param name="strKey">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 }