.Net--MD5加密


第一次写博客  不知道怎么说什么

   我们就来聊聊  MD5加密码

      由来

        MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest 开发出来,经MD2、MD3和MD4发展而来。

      作用

        是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑。这三个算法的描述和C语言源代码在Internet RFCs 1321中有详细的描述,这是一份最权威的文档,由Ronald L. Rivest在1992年8月向IETF提交。(说了这么多  其实我也不知道他说的什么)  简单来讲MD5 就是将用户的密码进行加密用来保护用户的安全 (MD5是不可逆解密 除非暴力强解)
 
 介绍了这么久 我们开始进入正题咯       
    
 1         static void Main(string[] args)
 2         {
 3 
 4             //调用MD5Str  得到加密后字符串  202CB962AC59075B964B07152D234B70
 5             Console.WriteLine(MD5Str("123"));
 6 
 7         }
 8         /// <summary>
 9         /// 这是最基础的MD5 加密
10         /// </summary>
11         /// <param name="password"></param>
12         /// <returns></returns>
13         public static string MD5Str(string password)
14         {
15             return  BitConverter.ToString(MD5.Create().ComputeHash(Encoding.Default.GetBytes(password))).Replace("-", "");
16 
17 
18         }

  一般的程序员认为 这样就可以  其实还是有问题的  因为别人可以通过一些网站暴力破解 (http://www.cmd5.com/)这样还是无法保证用户的密码安全,并没有什么用 ,接下来就开始变异啦

 1       static void Main(string[] args)
 2         {
 3 
 4             //调用MD5Str  得到加密后字符串  202CB962AC59075B964B07152D234B70
 5             Console.WriteLine(MD5Str("123"));
 6             //调用MD5Str2 变异后  得到加密后字符串  20-2C-B9-62-AC-59-07-5B-96-4B-07-15-2D-23-4B-70
 7             Console.WriteLine(MD5Str2("123"));
 8 
 9         }
10         /// <summary>
11         /// 这是最基础的MD5 加密
12         /// </summary>
13         /// <param name="password"></param>
14         /// <returns></returns>
15         public static string MD5Str(string password)
16         {
17             return  BitConverter.ToString(MD5.Create().ComputeHash(Encoding.Default.GetBytes(password))).Replace("-", "");
18 
19 
20         }
21         /// <summary>
22         /// 简单的变异MD5
23         /// </summary>
24         /// <param name="password"></param>
25         /// <returns></returns>
26         public static string MD5Str2(string password)
27         {
28             return BitConverter.ToString(MD5.Create().ComputeHash(Encoding.Default.GetBytes(password))).Replace("X", "");
29 
30 
31         }

 就算是他暴力破解也要一定的时间 和 金钱

 还有第三种  你可以在里面自行加密码

 1  // 在这里想怎么玩就这么玩        
 2 public static string MD5Str3(string password) { 
 3         
 4      
 5             MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
 6             byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(password));
 7             StringBuilder sBuilder = new StringBuilder();
 8             for (int i = 0; i < data.Length; i++)
 9             {
10                 sBuilder.Append(data[i].ToString("x2")+"1");
11             }
12             return sBuilder.ToString();
13        
14 
15         }

  总的来说 MD5还是挺好的 

 
 
  
 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM