using System; using System.Security.Cryptography; using System.Text; public static class NetworkValideAesSdk { static byte[] Sha256(string text) => SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes(text)); public static string EncryptData(string rawData, string aesKey) { using (var aes = Aes.Create()) { aes.Key = Sha256(aesKey); aes.Mode = CipherMode.CBC; aes.Padding = PaddingMode.PKCS7; aes.GenerateIV(); using (var enc = aes.CreateEncryptor()) { var plain = Encoding.UTF8.GetBytes(rawData); var cipher = enc.TransformFinalBlock(plain, 0, plain.Length); var all = new byte[aes.IV.Length + cipher.Length]; Buffer.BlockCopy(aes.IV, 0, all, 0, aes.IV.Length); Buffer.BlockCopy(cipher, 0, all, aes.IV.Length, cipher.Length); return Convert.ToBase64String(all); } } } public static string DecryptMsg(string msg, string aesKey) { var all = Convert.FromBase64String(msg); var iv = new byte[16]; var cipher = new byte[all.Length - 16]; Buffer.BlockCopy(all, 0, iv, 0, 16); Buffer.BlockCopy(all, 16, cipher, 0, cipher.Length); using (var aes = Aes.Create()) { aes.Key = Sha256(aesKey); aes.IV = iv; aes.Mode = CipherMode.CBC; aes.Padding = PaddingMode.PKCS7; using (var dec = aes.CreateDecryptor()) { return Encoding.UTF8.GetString(dec.TransformFinalBlock(cipher, 0, cipher.Length)); } } } public static string MakeSign(string data, string appKey) { using (var md5 = MD5.Create()) { var bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(data + appKey)); return BitConverter.ToString(bytes).Replace("-", "").ToLowerInvariant(); } } }