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

下载软件后使用c#获取文件的md5码示例

程序员文章站 2024-02-22 09:36:34
很多朋友在下载文件的时候,经常会发现网站提供了md5校验码,其实这个md5码的作用就是当你下载文件好了之后,拿你下载好的文件的md5校验码,跟下载网站提供的进行比较,如果完...

很多朋友在下载文件的时候,经常会发现网站提供了md5校验码,其实这个md5码的作用就是当你下载文件好了之后,拿你下载好的文件的md5校验码,跟下载网站提供的进行比较,如果完全一致,说明你下载中文件没问题,如果校验码不一致,说明下载过程中你的文件出错了,或者是你的文件下载出错了,反正就是跟原始文件不一致。而且只要是文件不一样,md5码肯定不一样,这个是不会重复的,那么到底如何获取文件的md5码呢?下面就使用c#代码进行讲解。

复制代码 代码如下:

//-----------------------------------------------------------------------
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.text;
using system.windows.forms;
using system.security;
using system.security.cryptography;
using system.io;
namespace md5fileform
{
    public partial class md5form : form
    {
        public md5form()
        {
            initializecomponent();
        }
        private void btngetmd5_click(object sender, eventargs e)
        {
            md5 md5 = md5.create();
            openfiledialog ofd = new openfiledialog();
            ofd.showdialog();
            filestream fs = new filestream(ofd.filename, filemode.open);
            byte[] bs = md5.computehash(fs);
            //获取到md5码
            string md5str = bitconverter.tostring(bs).replace("-","");
            messagebox.show(string.format("[{0}]的md5码为:\n{1}",ofd.filename,md5str));
        }
    }
}

第二个使用示例

复制代码 代码如下:

using system;
using system.io;
using system.security.cryptography;
using system.text;

namespace test
{
    public class md5code
    {
        /// <summary>
        /// 获取文件的md5码
        /// </summary>
        /// <param name="filename">传入的文件名(含路径及后缀名)</param>
        /// <returns></returns>
        public string getmd5hashfromfile(string filename)
        {
            try
            {
                filestream file = new filestream(filename, system.io.filemode.open);
                md5 md5 = new 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);
            }
        }
    }
}