代码改变世界

C# MD5 16,32位加密

2008-04-04 16:34  齐天大圣  阅读(1494)  评论(0编辑  收藏  举报
 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4using System.Security.Cryptography;
 5
 6namespace md5
 7{
 8    class Program
 9    {
10        static void Main(string[] args)
11        {
12            Console.WriteLine(UserMd5("8"));
13            Console.WriteLine(GetMd5Str("8"));
14        }

15        /**/
16        /// <summary> 
17        /// MD5 16位加密 
18        /// </summary> 
19        /// <param name="ConvertString"></param> 
20        /// <returns></returns> 

21
22        public static string GetMd5Str(string ConvertString)
23        {
24            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
25            string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 48);
26            t2 = t2.Replace("-""");
27            return t2;
28        }

29        /**/
30        /// <summary> 
31        /// MD5 32位加密 
32        /// </summary> 
33        /// <param name="str"></param> 
34        /// <returns></returns> 

35        static string UserMd5(string str)
36        {
37            string cl = str;
38            string pwd = "";
39            MD5 md5 = MD5.Create();//实例化一个md5对像 
40            // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择  
41            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
42            // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得 
43            for (int i = 0; i < s.Length; i++)
44            {
45                // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
46                pwd = pwd + s[i].ToString("X");
47
48            }

49            return pwd;
50        }

51    }

52}

53