79 lines
3.1 KiB
C#
79 lines
3.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace DG.Tool
|
|
{
|
|
public class AesUtil
|
|
{
|
|
/// <summary>
|
|
/// AES加密算法
|
|
/// </summary>
|
|
/// <param name="input">明文字符串</param>
|
|
/// <returns>字符串</returns>
|
|
public static string EncryptByAES(string input, string key, string iv)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(input))
|
|
{
|
|
return input;
|
|
}
|
|
using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
|
|
{
|
|
rijndaelManaged.Mode = CipherMode.CBC;
|
|
rijndaelManaged.Padding = PaddingMode.PKCS7;
|
|
rijndaelManaged.FeedbackSize = 128;
|
|
rijndaelManaged.Key = Encoding.UTF8.GetBytes(key);
|
|
rijndaelManaged.IV = Encoding.UTF8.GetBytes(iv);
|
|
ICryptoTransform encryptor = rijndaelManaged.CreateEncryptor(rijndaelManaged.Key, rijndaelManaged.IV);
|
|
using (MemoryStream msEncrypt = new MemoryStream())
|
|
{
|
|
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
|
|
{
|
|
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
|
|
{
|
|
swEncrypt.Write(input);
|
|
}
|
|
byte[] bytes = msEncrypt.ToArray();
|
|
return Convert.ToBase64String(bytes);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// AES解密
|
|
/// </summary>
|
|
/// <param name="input">密文字节数组</param>
|
|
/// <returns>返回解密后的字符串</returns>
|
|
public static string DecryptByAES(string input, string key, string iv)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(input))
|
|
{
|
|
return input;
|
|
}
|
|
var buffer = Convert.FromBase64String(input);
|
|
using (RijndaelManaged rijndaelManaged = new RijndaelManaged())
|
|
{
|
|
rijndaelManaged.Mode = CipherMode.CBC;
|
|
rijndaelManaged.Padding = PaddingMode.PKCS7;
|
|
rijndaelManaged.FeedbackSize = 128;
|
|
rijndaelManaged.Key = Encoding.UTF8.GetBytes(key);
|
|
rijndaelManaged.IV = Encoding.UTF8.GetBytes(iv);
|
|
ICryptoTransform decryptor = rijndaelManaged.CreateDecryptor(rijndaelManaged.Key, rijndaelManaged.IV);
|
|
using (MemoryStream msEncrypt = new MemoryStream(buffer))
|
|
{
|
|
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, decryptor, CryptoStreamMode.Read))
|
|
{
|
|
using (StreamReader srEncrypt = new StreamReader(csEncrypt))
|
|
{
|
|
return srEncrypt.ReadToEnd();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |