+ -
当前位置:首页 → 问答吧 → 网上找到MD5的两种实现方式区别没弄明白

网上找到MD5的两种实现方式区别没弄明白

时间:2011-12-06

来源:互联网

C# code

byte[] result = Encoding.Default.GetBytes("123abc456");
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] output = md5.ComputeHash(result);
            Console.WriteLine(BitConverter.ToString(output).Replace("-", ""));  //为什么要Replace("-", "")?



C# code

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] encryptedBytes = md5.ComputeHash(Encoding.ASCII.GetBytes("123456")); //为什么不像上面的直接用数组呢?
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < encryptedBytes.Length; i++)
            {
                sb.AppendFormat("{0:x2}", encryptedBytes[i]); //{0:x2}是什么意思
            }
            Console.WriteLine(sb.ToString());



在网上找到的两种方式,最后的结果都一样,这两种方式什么区别呢?建议用哪个方式呢?

作者: hailun   发布时间: 2011-12-06

byte[] encryptedBytes = md5.ComputeHash(Encoding.ASCII.GetBytes("123456")); //为什么不像上面的直接用数组呢
其实是用了的:Encoding.ASCII.GetBytes("123456"),就是把123456转换成数组
{0:x2}是什么意思?
代表:转换成大写的十六进制文本

作者: cuthkid   发布时间: 2011-12-06

谢谢楼上这么晚还回复
那为什么上面没用for循环而下面的采用for循环的形式呢?效率上有什么区别吗?上面的要比下面快吗?
或者说建议采用哪种方式呢?

作者: hailun   发布时间: 2011-12-06