using System; using System.Security.Cryptography; using System.Text; using Talk.Extensions; namespace Host.Common { public static class EncryptDecryptExtension { //可在配置文件配置自己的DES3Key - 必须16位 private static readonly string des3key = ConfigurationManager.GetTryConfig("DES3Key", "73495773n~@^v&B6"); /// /// 加密 /// /// /// public static string DES3Encrypt(this string data) { byte[] inputArray = Encoding.UTF8.GetBytes(data); var tripleDES = TripleDES.Create(); var byteKey = Encoding.UTF8.GetBytes(des3key); byte[] allKey = new byte[24]; Buffer.BlockCopy(byteKey, 0, allKey, 0, 16); Buffer.BlockCopy(byteKey, 0, allKey, 16, 8); tripleDES.Key = allKey; tripleDES.Mode = CipherMode.ECB; tripleDES.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = tripleDES.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length); return Convert.ToBase64String(resultArray, 0, resultArray.Length); } /// /// 解密 /// /// /// /// public static string DES3Decrypt(this string data) { byte[] inputArray = Convert.FromBase64String(data); var tripleDES = TripleDES.Create(); var byteKey = Encoding.UTF8.GetBytes(des3key); byte[] allKey = new byte[24]; Buffer.BlockCopy(byteKey, 0, allKey, 0, 16); Buffer.BlockCopy(byteKey, 0, allKey, 16, 8); tripleDES.Key = allKey; tripleDES.Mode = CipherMode.ECB; tripleDES.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = tripleDES.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length); return Encoding.UTF8.GetString(resultArray); } } }