欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-16 09:39:10
本文介绍一个c#函数,可以实现计算文件的md5值,可以用于文件传输后进行有效性校验。 我们知道可以通过将一个字符串进行散列(hash)运算得到一个32位字符串,将其作为密...

本文介绍一个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值的代码,本文就介绍这么多,希望对您有所帮助,谢谢!