AES加密解密(根据指定秘钥)

最近在做调用第三方接口,要求入参AES加密,并且秘钥为16位的长度,在此记录一下。

首先引用命名空间:

using System.IO;

using System.Text;

using System.Security.Cryptography;

 1  /// 
 2         /// AES加密(无向量)
 3         /// 
 4         /// 被加密的明文
 5         /// 密钥
 6         /// 密文
 7         public  string AESEncrypt(string Data, string Key)
 8         {
 9             MemoryStream mStream = new MemoryStream();
10             RijndaelManaged aes = new RijndaelManaged();
11 
12             byte[] plainBytes = Encoding.UTF8.GetBytes(Data);
13             Byte[] bKey = new Byte[16];
14             Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);
15 
16             aes.Mode = CipherMode.ECB;
17             aes.Padding = PaddingMode.PKCS7;
18             aes.KeySize = 128;
19             //aes.Key = _key;
20             aes.Key = bKey;
21             //aes.IV = _iV;
22             CryptoStream cryptoStream = new CryptoStream(mStream, aes.CreateEncryptor(), CryptoStreamMode.Write);
23             try
24             {
25                 cryptoStream.Write(plainBytes, 0, plainBytes.Length);
26                 cryptoStream.FlushFinalBlock();
27                 return Convert.ToBase64String(mStream.ToArray());
28             }
29             finally
30             {
31                 cryptoStream.Close();
32                 mStream.Close();
33                 aes.Clear();
34             }
35         }

 1  #region 解密
 2         /// 
 3         /// AES解密(无向量)
 4         /// 
 5         /// 被加密的明文
 6         /// 密钥
 7         /// 明文
 8         public  string AESDecrypt(String Data, String Key)
 9         {
10             Byte[] encryptedBytes = Convert.FromBase64String(Data);
11             Byte[] bKey = new Byte[16];
12             Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);
13 
14             MemoryStream mStream = new MemoryStream(encryptedBytes);
15             //mStream.Write( encryptedBytes, 0, encryptedBytes.Length );
16             //mStream.Seek( 0, SeekOrigin.Begin );
17             RijndaelManaged aes = new RijndaelManaged();
18             aes.Mode = CipherMode.ECB;
19             aes.Padding = PaddingMode.PKCS7;
20             aes.KeySize = 128;
21             aes.Key = bKey;
22             //aes.IV = _iV;
23             CryptoStream cryptoStream = new CryptoStream(mStream, aes.CreateDecryptor(), CryptoStreamMode.Read);
24             try
25             {
26                 byte[] tmp = new byte[encryptedBytes.Length + 32];
27                 int len = cryptoStream.Read(tmp, 0, encryptedBytes.Length + 32);
28                 byte[] ret = new byte[len];
29                 Array.Copy(tmp, 0, ret, 0, len);
30                 return Encoding.UTF8.GetString(ret);
31             }
32             finally
33             {
34                 cryptoStream.Close();
35                 mStream.Close();
36                 aes.Clear();
37             }
38         }
39         #endregion

调用时:string sendData = publicSH.AESDecrypt(sendData, "HYYSIENDEUFHVKDA");//返回信息解密 sendData 为要加密或者解密的信息 ,第二个参数是16位的秘钥
 
   
 
   
 
  

 

 

你可能感兴趣的:(AES加密解密(根据指定秘钥))