using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace TEngine.Core { public static class CryptHelper { // 对应的字符串SYUwQN360OPY1gaL // 在这个网站随机生成的 http://tool.c7sky.com/password/ private static readonly byte[] Key = { 0x53, 0x59, 0x55, 0x77, 0x51, 0x4e, 0x33, 0x36, 0x30, 0x4f, 0x50, 0x59, 0x31, 0x67, 0x61, 0x4c }; /// /// 创建一个新的KEY /// /// 一个长度为16的字符串、如果超过只会截取前16位 /// 返回的是一个十六进制的字符串、每个用,分割的、每个都是一个byte public static string CreateKey(string keyStr) { if (keyStr.Length > 16) { keyStr = keyStr.Substring(0, 15); } var bytes = Encoding.UTF8.GetBytes(keyStr); return $"0x{BitConverter.ToString(bytes, 0).Replace("-", ", 0x").ToLower()}"; } /// /// AES 加密 /// /// /// public static byte[] AesEncrypt(byte[] toEncryptArray) { var rm = Aes.Create(); rm.Key = Key; rm.Mode = CipherMode.ECB; rm.Padding = PaddingMode.PKCS7; var cTransform = rm.CreateEncryptor(); return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); } /// /// AES 解密 /// /// /// public static MemoryStream AesDecryptReturnStream(byte[] toEncryptArray) { var bytes = AesDecrypt(toEncryptArray); return new MemoryStream(bytes); } /// /// AES 解密 /// /// /// public static byte[] AesDecrypt(byte[] toEncryptArray) { var rm = Aes.Create(); rm.Key = Key; rm.Mode = CipherMode.ECB; rm.Padding = PaddingMode.PKCS7; var cTransform = rm.CreateDecryptor(); return cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); } } }