C# 128位AES 加密解密 (转)
2016-10-14 15:24
676 查看
/// 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 }
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 }
相关文章推荐
- 用C#实现AES加密和解密
- AES加密、解密算法 C#版
- AES-128,192,256位加密解密,其中128位已经测试过
- .Net(c#)加密解密之Aes和Des
- AES加密,解密 C# .net 解密支持大文件
- C#实现AES加密和解密函数
- AES 256 加密和解密 for C#
- Java aes加密C#解密的取巧方法
- C# - AES加密+解密
- C# AES加密解密
- C#中使用DES和AES加密解密
- AES加密解密-iphone-C#
- [转]C# 使用 256 位 AES 加密和解密文件
- C# 跨平台于Java的AES加密解密
- C#中使用DES和AES加密解密
- C#实现DES加密解密,AES加密解密
- 使用C#实现AES加密解密
- C#中使用DES和AES加密解密
- Asp.Net C#中除了MD5加密之外还经常用到了AES加密、解密与DES加密、解密,本次先介绍DES的加密及解密。注意的是DES的密匙是8位的。
- C#中使用DES和AES加密解密