public partial class HashEncrypt { /// <summary> /// </summary> /// <param name="strSource">待加密字串</param> /// <returns>加密后的字串</returns> public static string MD5Encrypt(string strSource) { return MD5Encrypt(strSource, 16); }
/// <summary> /// </summary> /// <param name="strSource">待加密字串</param> /// <param name="length">16或32值之一,其它则采用.net默认MD5加密算法</param> /// <returns>加密后的字串</returns> public static string MD5Encrypt(string strSource, int length) { byte[] bytes = Encoding.ASCII.GetBytes(strSource); byte[] hashValue = ((System.Security.Cryptography.HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName("MD5")).ComputeHash(bytes); StringBuilder sb = new StringBuilder(); switch (length) { case 16: for (int i = 4; i < 12; i++) sb.Append(hashValue[i].ToString("x2")); break; case 32: for (int i = 0; i < 16; i++) { sb.Append(hashValue[i].ToString("x2")); } break; default: for (int i = 0; i < hashValue.Length; i++) { sb.Append(hashValue[i].ToString("x2")); } break; } return sb.ToString(); }
/// <summary> /// md5 encrypt /// </summary> /// <param name="str"></param> /// <returns></returns> public static string MSMD5(String str) { MD5 md5 = new MD5CryptoServiceProvider(); byte[] data = System.Text.Encoding.Default.GetBytes(str); byte[] result = md5.ComputeHash(data); String ret = ""; for (int i = 0; i < result.Length; i++) ret += result[i].ToString("x").PadLeft(2, '0'); return ret; }
/// <summary> /// get md5 hash value /// </summary> /// <param name="input"></param> /// <returns></returns> static string MSGetMd5Hash(string input) { // Create a new instance of the MD5CryptoServiceProvider object. MD5 md5Hasher = System.Security.Cryptography.MD5.Create(); // Convert the input string to a byte array and compute the hash. byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input)); // Create a new Stringbuilder to collect the bytes // and create a string. StringBuilder sBuilder = new StringBuilder(); // Loop through each byte of the hashed data // and format each one as a hexadecimal string. for (int i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString("x2")); } // Return the hexadecimal string. return sBuilder.ToString(); }
/// <summary> /// Verify a hash against a string. /// </summary> /// <param name="input"></param> /// <param name="hash"></param> /// <returns></returns> static bool VerifyMd5Hash(string input, string hash) { // Hash the input. string hashOfInput = MSGetMd5Hash(input); // Create a StringComparer an comare the hashes. StringComparer comparer = StringComparer.OrdinalIgnoreCase; if (0 == comparer.Compare(hashOfInput, hash)) { return true; } else { return false; } } }
|
MD5是单向加密的,嗯 ,可逆加密怎么做呢?嗯 ,这里收藏一个不错的文章,总结得挺全。共两部分,感谢兴趣的自己看吧。
嗯 ,急着用的话,可以看这里,这个简单好懂
|