代码改变世界

计算字符串,文件的md5值

2015-12-18 10:55  silence_blog  阅读(454)  评论(0编辑  收藏  举报
//计算字符串的md5值
        public string GetMd5String(string msg)
        {
            StringBuilder sb = new StringBuilder();

            //1.创建md5对象
            using (MD5 md5 = MD5.Create())
            {
                //1.1把字符串转换为byte[]
                //对象字符串中包含中文,如果在进行md5计算时,使用不同的编码返回字节数组,那么可能 计算出的md5值会不相同,所以要使用相同的md5编码
                byte[] buffers = Encoding.UTF8.GetBytes(msg);
                //1.2进行md5计算,md5计算完毕后,返回的也是一个byte[]。
                byte[] bytes = md5.ComputeHash(buffers);
                md5.Clear();//释放资源,清除内存
                //1.3把bytes数组的每个字节转为一个16进制的字符串
                for (int i = 0; i < bytes.Length; i++)
                {
                    sb.Append(bytes[i].ToString("x2"));
                }
            }
            return sb.ToString();
        }

        //计算文件的md5值 
        public string GetFileMd5String(string path)
        {
            StringBuilder sb = new StringBuilder();
            //创建md5对象
            using (MD5 md5 = MD5.Create())
            {
                using (FileStream fs = File.OpenRead(path))
                {
                    byte[] bytes = md5.ComputeHash(fs);
                    md5.Clear();

                    for (int i = 0; i < bytes.Length; i++)
                    {
                        sb.Append(bytes[i].ToString("x2"));
                    }
                    return sb.ToString();
                }
            }

        }