c#MD5加密
原文: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位的则不需要,加密后直接对比就可以了!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】