using System; using System.Collections.Generic; using System.IO; using System.Security.Cryptography; using System.Text; namespace CommonUtil.DMEncrypt { /// /// 多卖加密 /// public static class Encrypt { private static byte[] Keys = new byte[] { 18, 52, 86, 120, 144, 171, 205, 239 }; private static readonly string keyData = "appdm&2s"; /// /// 加密Secret /// public static readonly string keySecret = "secdm*41"; /// /// 备份订单数据加密 /// public readonly static string keyBdUser = "sebddm*1"; /// /// 加密sql /// public static readonly string keySql = "dmrebuqi"; /// /// 解密 /// /// /// public static string DecryptDES(string decryptString) { string result; try { byte[] bytes = Encoding.UTF8.GetBytes(Encrypt.keyData); byte[] keys = Encrypt.Keys; byte[] array = Convert.FromBase64String(decryptString); DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider(); MemoryStream memoryStream = new MemoryStream(); CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateDecryptor(bytes, keys), CryptoStreamMode.Write); cryptoStream.Write(array, 0, array.Length); cryptoStream.FlushFinalBlock(); result = Encoding.UTF8.GetString(memoryStream.ToArray()); } catch { result = decryptString; } return result; } /// /// 加密 /// /// /// public static string EncryptDES(string encryptString) { string result; try { byte[] bytes = Encoding.UTF8.GetBytes(Encrypt.keyData.Substring(0, 8)); byte[] keys = Encrypt.Keys; byte[] bytes2 = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider(); MemoryStream memoryStream = new MemoryStream(); CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateEncryptor(bytes, keys), CryptoStreamMode.Write); cryptoStream.Write(bytes2, 0, bytes2.Length); cryptoStream.FlushFinalBlock(); result = Convert.ToBase64String(memoryStream.ToArray()); } catch { result = encryptString; } return result; } #region 必达账号加密 /// /// 必达账号加密 /// /// 待加密的字符串 /// 加密成功返回加密后的字符串,失败返回源串 public static string EncryptDES_BD(string encryptString) { try { byte[] rgbKey = Encoding.UTF8.GetBytes(keyBdUser.Substring(0, 8));//转换为字节 byte[] rgbIV = Keys; byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();//实例化数据加密标准 MemoryStream mStream = new MemoryStream();//实例化内存流 //将数据流链接到加密转换的流 CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } catch { return encryptString; } } #endregion #region 必达账号解密 /// /// 必达账号解密 /// /// 待解密的字符串 /// 解密成功返回解密后的字符串,失败返源串 public static string DecryptDES_BD(string decryptString) { try { byte[] rgbKey = Encoding.UTF8.GetBytes(keyBdUser); byte[] rgbIV = Keys; byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } catch { return decryptString; } } #endregion #region 数据库链接字符串 加密解密 /// /// 数据库链接加密 /// /// 待加密的字符串 /// 加密成功返回加密后的字符串,失败返回源串 public static string EncryptDES_DB(string encryptString) { try { byte[] rgbKey = Encoding.UTF8.GetBytes(keySql.Substring(0, 8));//转换为字节 byte[] rgbIV = Keys; byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();//实例化数据加密标准 MemoryStream mStream = new MemoryStream();//实例化内存流 //将数据流链接到加密转换的流 CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } catch { return encryptString; } } /// /// 数据库链接解密 /// /// 待解密的字符串 /// 解密成功返回解密后的字符串,失败返源串 public static string DecryptDES_DB(string decryptString) { try { byte[] rgbKey = Encoding.UTF8.GetBytes(keySql); byte[] rgbIV = Keys; byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } catch { return decryptString; } } #endregion } }