標籤:blank src net md5加密 ice dig value def com
原文:http://blog.csdn.net/wonsoft/article/details/5913572
好文:http://www.cnblogs.com/healer007/p/5062189.html
MD5的全稱是message-digest algorithm 5(資訊-摘要演算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest開發出來, 經md2、md3和md4發展而來。
MD5具有很好的安全性(因為它具有無法復原的特徵,加過密的密文經過解密後和加密前的東東相同的可能性極小)
16位加密
/// <summary>/// 16位MD5加密/// </summary>/// <param name="password"></param>/// <returns></returns>public static string GetMD5(string Password){ var md5 = new MD5CryptoServiceProvider(); string t2 = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(Password)), 4, 8); t2 = t2.Replace("-", ""); return t2;}
32、48、64位加密
private static string GetMD5(string Password) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] bytValue, bytHash; bytValue = System.Text.Encoding.UTF8.GetBytes(Password); bytHash = md5.ComputeHash(bytValue); md5.Clear(); StringBuilder sTemp = new StringBuilder(Password.Length); for (int i = 0; i < bytHash.Length; i++) { sTemp.Append(bytHash[i].ToString("X"));
sTemp.Append(bytHash[i].ToString("X3"));
sTemp.Append(bytHash[i].ToString("X4"));
//加密結果"x"結果為32位,"x3"結果為48位,"x4"結果為64位 } return sTemp.ToString().ToLower(); } static void Main(string[] args) { var result = GetMD5("123456"); Console.WriteLine(result);
}
以下分別是md5通過16位、32位、48位、64位加密後的密碼字元
注意:
MD5加密後所得到的常用的是32位的編碼,而在不少地方會用到16位的編碼
它們有什麼區別呢?
16位加密就是從32位MD5散列中把中間16位提取出來!
其實破解16位MD5散列要比破解32位MD5散列還慢。
因為他多了一個步驟,就是使用32位加密後再把中間16位提取出來, 然後再進行對比。
而破解32位的則不需要,加密後直接對比就可以了!
c#MD5加密