C#.net获取文件md5值的方法

2015/12/21 20:18:43 人评论 次浏览 分类:.NET


    

    在开发文件管理的相关功能时,需要判断上传的文件是否是重复存在的,特别是最近的云盘,那个超大文件上传就是根据这个原理,判断云端的文件是否跟本地的文件是否一样的,如果是一样的话就不需要上传了直接引用云端的文件,这个就是大文件秒传的原理,下面就介绍简单的C#获取文件MD5值的方法:



需要引用的命名空间:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Security.Cryptography;


        /// <summary>
        /// 功能:文件的md5值的读取
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <returns>md5值</returns>
        public static string getFileMD5(string filePath)
        {
            try
            {
                FileStream get_file = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
                System.Security.Cryptography.MD5CryptoServiceProvider get_md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
                byte[] hash_byte = get_md5.ComputeHash(get_file);
                string resule = System.BitConverter.ToString(hash_byte);
                resule = resule.Replace("-", "");
                return resule;
            }
            catch (Exception e)
            {
                return e.ToString();
            }
        }


        /// <summary>
        /// 功能:文件的md5值的读取
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <returns>md5值</returns>

        public static string getFileMD5(string filePath)
        {

            string result = string.Empty;
            FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] md5byte = md5.ComputeHash(fs);
            int i, j;
            foreach (byte b in md5byte)
            {
                i = Convert.ToInt32(b);
                j = i >> 4;
                result += Convert.ToString(j, 16);
                j = ((i << 4) & 0x00ff) >> 4;
                result += Convert.ToString(j, 16);
            }
            return result;
        }
       

    上面两种方式的原理,都是先通过ComputeHash转换成byte[]类型,然后进行处理,只是对byte[]的处理方式不同而已,效率是一样的。














相关资讯

  • Windows环境下ASP.NET Core项目站点自启动运行

    ASP.NET Core可以通过 IIS站点发布 ,也可以通过自运行启动站点。也就只要安装了dotnet (.net core SDK )就可以自启动网站,不需要依赖IIS。

    2018/11/11 18:00:56
  • VS2017环境与.NET Core SDK下载安装

    都2018年了,如果是VS2015的,还是直接升级到VS2017吧。首先先安装.NET Core SDK,,然后再安装 VS2017。

    2018/7/10 22:57:35
  • VS2015中的.NET Core SDK下载与安装搭建Asp.net core开发环境

    VS2015时没有自带ASP.NET Core(VS2017是自带Core的,只要在安装的时候选择安装core跨平台即可),如果要使用.NET Core的开发环境就需要单独安装.NET Core SDK。下面我们介绍是在VS2015的环境下安装.NET Core SDK的步骤。

    2018/7/10 21:36:05
  • 【window服务系列】C#.Net的window服务的调试

    window service 创建成功之后就可以进行调试了。1.安装并运行服务这里不详细说。可以用installutil.exe或者 netstart。运行之后,服务程序的就是运行在进程中。2.附加到进程。这里不能直接运行启动调试(F5)。选择对应的服务程序进行附加。3.添加调试代码。因为我们要启动了服…

    2017/6/15 20:08:59

共有访客发表了评论 网友评论

验证码: 看不清楚?