下载软件后使用c#获取文件的md5码示例
发布时间:2022-02-08 21:39:58
很多朋友在下载文件的时候,经常会发现网站提供了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);
}
}
}
}
猜你喜欢
- 基于servlet+jsp+jdbc的后台管理系统,包含5个模块:汽车账户部管理、租车账户部管理、汽车信息管理表、租车记录表、租车租聘表。功
- 问题描述springcloud项目部署或调试时,占用的内存特别多。当部署到服务器上去后,有可能导致服务器内存占用过多而崩溃。解决方案&nbs
- 1、mapper.xml文件中的sql语句不提示1.1 首先,alt+enter,出现如下窗口随后的窗口选择这样在如下窗口中会增加一个upd
- 一. 方法重写在面向对象中,实现多态的必备条件是继承、重写和向上转型,现在我们已经学习了什么是继承。接下来我们再来学习什么是方法重写,这是我
- Mybatis-Spring当我们使用mybatis和spring整合后为什么下面的代码可以运行?一个问题:我就写了个mapper接口为什么
- 什么是流?流:程序和设备之间连接起来的一根用于数据传输的管道,流就是一根管道。流的分类:四大基本抽象流(输入流,输出流,字符流,字节流)文件
- 遇到一个@ConditionalOnMissingBean失效的问题,今天花点时间来分析一下。现场回放services首先介绍下代码结构:有
- (新手写博客,主要是对自己学习的归纳总结。会对很多小细节详解。)单例模式的定义:确保一个类只有一个实例,并提供一个全局访问点。首先实例大家应
- 一、添加联系人Intent addIntent = new Intent(Intent.ACTION_INSERT,Uri.withAppe
- 要判断输入金额为正确金额的方法有两个,一个是用正则表达式,另一个就是用textfield的代理方法有时候难免遇到这样的需求,不符合规则的金额
- 一、线程的生命周期1.五种状态:新建状态、就绪状态、运行状态、阻塞状态、消亡状态2.就绪状态的线程表示有权利去获取CPU的时间片,CPU时间
- 文章导读本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统。本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结
- 不知道有人做没做过对日外包,如果做过的话,那么对vb.net应该非常熟悉了,当年我刚毕业的时候也做过四个月的外包,那种日子简直不是人过的,就
- 本文实例为大家分享C++二分查找算法,通过改变边界位置来进行查找的方法,代码如下:#include <iostream>usin
- 今天在码代码的时候突然想到这个问题,觉得有点困惑。在网上也翻阅不少帖子其中有一个帖子给了我一个思路,其实也是解释了基础概念。概念一:try
- Transfer-Encoding简介transfer-eccoding所描述的是消息请求(request)和响应(response)所附带
- ClasspathResource路径问题前言在项目中工程以springboot jar形式发布,跟之前容器比少了一个解压目录,这个过程中出
- 写在前面“The origin server did not find a current representation for the t
- 背景随着公司业务越来越复杂,在同一个列表中需要展示各种类型的数据。总体结构ItemViewAdapter: 每种类型的卡片分别都是不同的It
- 前言第二步理论上我们该写客户端了,但是,在此之前,需要先介绍下一些必要的方法以及操作。写代码还是要尽量的保证通用性,以便以后需要的时候可以拿