C#读取文件MD5值的实现代码

作者:junjie 时间:2021-10-08 18:01:39 

本文介绍一个C#函数,可以实现计算文件的MD5值,可以用于文件传输后进行有效性校验。

我们知道可以通过将一个字符串进行散列(Hash)运算得到一个32位字符串,将其作为密码来保存是最常见的MD5应用。不知道大家有没有注意到,在网上一些下载文件的地方,旁边注明了MD5校验值,也是一个32位十六制字符串。这个字符串怎么用呢?这就是文件的MD5加密。

当我们将一个文件从网上下载之后 ,可以计算一下文件的MD5值,然后和网上公布的MD5值进行对比。结果一致,表示文件没有问题,如果结果不一致,有两种可能,一是文件损坏了,无法使用;还有一种情况,那就是文件被人替换了。在下载exe文件时尤其应该注意,如果下载了一个被人替换过后的文件,那是相当危险的事,可能这个文件就被人植入了木马。

那么应该怎么来计算文件的MD5值呢?洪哥给出了一段C#的源代码。有兴趣的朋友参考参考。注意,下面这段代码要包含System.IO命名空间。


/// <summary>
/// 计算文件的MD5校验
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static string GetMD5HashFromFile(string fileName)
{
    try
    {
        FileStream file = new FileStream(fileName, FileMode.Open);
        System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
        byte[] retVal = md5.ComputeHash(file);
        file.Close();

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < retVal.Length; i++)
        {
            sb.Append(retVal[i].ToString("x2"));
        }
        return sb.ToString();
    }
    catch (Exception ex)
    {
        throw new Exception("GetMD5HashFromFile() fail,error:" + ex.Message);
    }
}

大家可以看到,上面C#代码主要创建了System.Security.Cryptography.MD5类,使用了它的ComputeHash方法。然后将字节数组转换成16进制字符串返回。

大家可以通过上面的主要函数,自己用C#写一个计算文件MD值的小程序了。
       
关于C#计算文件MD5值的代码,本文就介绍这么多,希望对您有所帮助,谢谢!

标签:C#,文件MD5值
0
投稿

猜你喜欢

  • SpringBoot文件上传功能的实现方法

    2021-11-23 11:24:27
  • SpringBoot实现动态配置及项目打包部署上线功能

    2021-07-13 21:36:53
  • C#正则表达式判断输入日期格式是否正确

    2022-04-20 07:31:32
  • Spring Boot 实例代码之通过接口安全退出

    2022-02-14 04:41:36
  • C#实现的JS操作类实例

    2023-11-13 05:19:48
  • java8 如何实现分组计算数量和计算总数

    2022-05-05 01:17:32
  • java 指定某个jdk版本方法

    2023-10-20 08:07:28
  • Java接口中尽量避免使用数组

    2022-07-06 23:24:14
  • 简单的java socket客户端和服务端示例

    2023-06-27 18:13:27
  • C#操作config文件的具体方法

    2023-09-03 12:18:07
  • Spring Security 中细化权限粒度的方法

    2022-08-30 14:26:40
  • C#根据http和ftp图片地址获取对应图片

    2023-06-06 02:00:23
  • Java实现飞机航班管理系统的思路详解

    2022-08-20 19:48:42
  • 详解Java token主流框架之JWT

    2022-03-30 19:30:34
  • 不看后悔!揭秘游戏服务器开发

    2023-08-22 16:20:30
  • Android中实现水平滑动(横向滑动)ListView示例

    2021-09-07 18:15:03
  • C#实现获取不同对象中名称相同属性的方法

    2021-11-04 19:26:32
  • Android实现文字上下滚动效果

    2023-02-02 07:40:00
  • 学会IDEA REST Client后就可以丢掉postman了

    2023-11-10 15:32:56
  • 一个依赖搞定 Spring Boot 接口防盗刷的流程分析

    2023-06-01 16:46:41
  • asp之家 软件编程 m.aspxhome.com