using System; using System.Security.Cryptography; using System.Text; namespace CB.TVUCenter.Encrypt { public class AES { /// /// AES加密 /// /// 加密字符串 /// 密钥 /// public static string Encrypt(string toEncrypt, string key) { byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key); byte[] toEncryptArray = UTF8Encoding.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 Convert.ToBase64String(resultArray, 0, resultArray.Length); } /// /// AES解密 /// /// 解密密文 /// 密钥 /// public static string Decrypt(string toDecrypt, string key) { byte[] keyArray = UTF8Encoding.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 UTF8Encoding.UTF8.GetString(resultArray); } /// /// 随机生成16位AESkey /// /// public static string GenerateAESKey(int length) { string str = string.Empty; Random rnd1 = new Random(); int r = rnd1.Next(10, 100); long num2 = DateTime.Now.Ticks + r; Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> r))); for (int i = 0; i < length; i++) { char ch; int num = random.Next(); if ((num % 2) == 0) { ch = (char)(0x30 + ((ushort)(num % 10))); } else { ch = (char)(0x41 + ((ushort)(num % 0x1a))); } str = str + ch.ToString(); } return str; } } }