MD5加密/对称加密/正则过滤字符串
using System; using System.IO; using System.Security.Cryptography; using System.Text; using System.Web.Security; namespace Teewoo.Common { /// <summary> /// 加密解密算法的具体实现类 /// </summary> public class EncryptHelper { /// <summary> /// 生成32位的MD5字符串:原生态加密(FormsAuthentication) /// </summary> /// <param name="str"></param> /// <returns></returns> public static string EncryptToMD5_Forms(string str) { return FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5"); } /// <summary> /// 生成32位的MD5字符串(MD5CryptoServiceProvider) /// </summary> /// <param name="str"></param> /// <returns></returns> public static string EncryptToMD5_CSP(string str) { byte[] b = Encoding.Unicode.GetBytes(str.ToCharArray()); // 字符转换并生成数组 MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] md5byte = md5.ComputeHash(b); int i, j; StringBuilder sb = new StringBuilder(); foreach (byte btmp in md5byte) { i = Convert.ToInt32(btmp); j = i >> 4; sb.Append(Convert.ToString(j, 16)); j = ((i << 4) & 0x00ff) >> 4; sb.Append(Convert.ToString(j, 16)); } return sb.ToString(); } /// <summary> /// 生成32位的MD5字符串(MD5Hash) /// </summary> /// <param name="str"></param> /// <returns></returns> public static string EncryptToMD5_Hash(string str) { MD5 md5Hash = MD5.Create(); byte[] data = md5Hash.ComputeHash(Encoding.GetEncoding("gb2312").GetBytes(str)); StringBuilder sb = new StringBuilder(); for (int i = 0; i < data.Length; i++) sb.Append(data[i].ToString("x2")); return sb.ToString(); } /// <summary> /// 生成16位的MD5字符串 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string EncryptToMD5_16(string str) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(str)), 4, 8); return t2.Replace("-", ""); } /// <summary> /// 正则表达式 过滤字符串 /// </summary> /// <param name="text"></param> /// <returns></returns> public static string SafeRequest(string text) { #region text = Regex.Replace(text, "<[^>]+>", "", RegexOptions.IgnoreCase | RegexOptions.Compiled); text = Regex.Replace(text, "--|;|'|\"", " ", RegexOptions.Compiled | RegexOptions.Multiline); // Finally remove any extra spaces from the string text = Regex.Replace(text, " {1,}", " ", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Multiline); return text; #endregion } #region # TripleDES # /// <summary> /// TripleDES加密(对称加密) /// </summary> /// <param name="key"></param> /// <param name="iv"></param> /// <param name="str"></param> /// <returns></returns> public static string EncryptToTripleDES(string key, string iv, string str) { SymmetricAlgorithm CSP = new TripleDESCryptoServiceProvider(); CSP.Key = Convert.FromBase64String(key); CSP.IV = Convert.FromBase64String(iv); // 指定加密的运算模式 CSP.Mode = System.Security.Cryptography.CipherMode.ECB; // 获取或设置加密算法的填充模式 CSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7; ICryptoTransform ct = CSP.CreateEncryptor(CSP.Key, CSP.IV); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); byte[] byt = Encoding.UTF8.GetBytes(str); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } /// <summary> /// TripleDES解密(对称加密) /// </summary> /// <param name="key"></param> /// <param name="iv"></param> /// <param name="str"></param> /// <returns></returns> public static string DecryptFromTripleDES(string key, string iv, string str) { TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider(); ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; des.Key = Convert.FromBase64String(key); des.IV = Convert.FromBase64String(iv); des.Mode = System.Security.Cryptography.CipherMode.ECB; des.Padding = System.Security.Cryptography.PaddingMode.PKCS7; ct = des.CreateDecryptor(des.Key, des.IV); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); byt = Convert.FromBase64String(str); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Encoding.UTF8.GetString(ms.ToArray()); } #endregion } }