using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace Api.Framework.Tools { public class AesHelper { /// /// 有密码的AES加密 /// /// 加密字符 /// 加密的密码 /// public static string Encrypt(string toEncrypt, string key) { if (key.Length > 32) { key = key.Substring(0, 32); } try { byte[] keyArray = Encoding.UTF8.GetBytes(key); byte[] toEncryptArray = Encoding.UTF8.GetBytes(toEncrypt); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = CipherMode.ECB; rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return ByteArrayToHexString(resultArray); } catch (Exception) { return ""; } } /// /// AES解密 /// /// /// /// public static string Decrypt(string toDecrypt, string key) { if (key.Length > 32) { key = key.Substring(0, 32); } byte[] keyArray = Encoding.UTF8.GetBytes(key); byte[] toEncryptArray = Convert.FromBase64String(toDecrypt); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.Mode = CipherMode.ECB; rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray); } /// /// 将一个byte数组转换成16进制字符串 /// /// /// public static string ByteArrayToHexString(byte[] data) { StringBuilder sb = new StringBuilder(data.Length * 3); foreach (byte b in data) { sb.Append(Convert.ToString(b, 16).PadLeft(2, '0')); } return sb.ToString().ToUpper(); } /// /// 将16进制字符串转换成byte数组 /// /// /// public static byte[] ByteArrayToHexString(string hexString) { //将16进制秘钥转成字节数组 var byteArray = new byte[hexString.Length / 2]; for (var x = 0; x < byteArray.Length; x++) { var i = Convert.ToInt32(hexString.Substring(x * 2, 2), 16); byteArray[x] = (byte)i; } return byteArray; } } }