using System.Linq; using System.Text; using System.Security.Cryptography; namespace HKCarPlateRecognize_App { public class AesHelper { public static string EncodeAES(string text, string key) { byte[] keyArray = null; using (var sha1 = new SHA1CryptoServiceProvider()) { byte[] hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(key)); var rd = sha1.ComputeHash(hash); keyArray = rd.Take(16).ToArray(); } RijndaelManaged rijndaelCipher = new RijndaelManaged(); rijndaelCipher.Mode = CipherMode.ECB; rijndaelCipher.Padding = PaddingMode.PKCS7; rijndaelCipher.KeySize = 128; rijndaelCipher.Key = keyArray; ICryptoTransform transform = rijndaelCipher.CreateEncryptor(); byte[] plainText = Encoding.UTF8.GetBytes(text); byte[] cipherBytes = transform.TransformFinalBlock(plainText, 0, plainText.Length); return ByteUtil.BytesToHexString(cipherBytes); } public static string DecodeAES(string ciphertext, string key) { byte[] keyArray = null; using (var sha1 = new SHA1CryptoServiceProvider()) { byte[] hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(key)); var rd = sha1.ComputeHash(hash); keyArray = rd.Take(16).ToArray(); } byte[] text = ByteUtil.HexStringToBytes(ciphertext); RijndaelManaged rijndaelCipher = new RijndaelManaged(); rijndaelCipher.Mode = CipherMode.ECB; rijndaelCipher.Padding = PaddingMode.PKCS7; rijndaelCipher.KeySize = 128; rijndaelCipher.BlockSize = 128; byte[] encryptedData = text; rijndaelCipher.Key = keyArray; ICryptoTransform transform = rijndaelCipher.CreateDecryptor(); byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length); return Encoding.UTF8.GetString(plainText); } } }