using System; using System.IO; using System.Security.Cryptography; using System.Text; using System.Web.Security; namespace Common { public class DESEncrypt { //加密串 //public static string encryptStr = "litianping"; public static string encryptStr = "abcDEF123@$@"; public static string Encrypt(string Text) { return DESEncrypt.Encrypt(Text, encryptStr ); } public static string Encrypt(string Text, string sKey) { DESCryptoServiceProvider cryptoServiceProvider = new DESCryptoServiceProvider(); byte[] bytes = Encoding.Default.GetBytes(Text); //c#的DES加密是key为8位 cryptoServiceProvider.Key = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); cryptoServiceProvider.IV = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); MemoryStream memoryStream = new MemoryStream(); CryptoStream cryptoStream = new CryptoStream((Stream) memoryStream, cryptoServiceProvider.CreateEncryptor(), CryptoStreamMode.Write); cryptoStream.Write(bytes, 0, bytes.Length); cryptoStream.FlushFinalBlock(); StringBuilder stringBuilder = new StringBuilder(); foreach (byte num in memoryStream.ToArray()) stringBuilder.AppendFormat("{0:X2}", (object) num); return stringBuilder.ToString(); } public static string Decrypt(string Text) { return DESEncrypt.Decrypt(Text, encryptStr); } public static string Decrypt(string Text, string sKey) { DESCryptoServiceProvider cryptoServiceProvider = new DESCryptoServiceProvider(); int length = Text.Length / 2; byte[] buffer = new byte[length]; for (int index = 0; index < length; ++index) { int num = Convert.ToInt32(Text.Substring(index * 2, 2), 16); buffer[index] = (byte) num; } //c#的DES加密是key为8位 cryptoServiceProvider.Key = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); cryptoServiceProvider.IV = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); MemoryStream memoryStream = new MemoryStream(); CryptoStream cryptoStream = new CryptoStream((Stream) memoryStream, cryptoServiceProvider.CreateDecryptor(), CryptoStreamMode.Write); cryptoStream.Write(buffer, 0, buffer.Length); cryptoStream.FlushFinalBlock(); return Encoding.Default.GetString(memoryStream.ToArray()); } } }