MD5鉴定文件是否相同

由于诸多安全因素,需要对网上下载的一些文件进行完整性校验。比如,由于工作需要我下载了一个EMOS_1.5_i386.iso镜像文件(extmail邮件系统),需要对其进行MD5校验。为此,用C# 2005写了一个获取文件MD5码的简单程序。

       用MD5进行文件校验,步骤如下:

1)  从文件发布单位那获取原始MD5码;

2)  用程序获取该文件的MD5码;

3)  对比1)和2)的MD5码是否一致;

       从上可以看出,根据文件通过程序计算其MD5码是关键,下表所示为C#获取文件MD5码的代码。新建一个windows应用程序,在默认窗体form1中添加:

       一个按钮”btnOpenFile”,click事件代码如下;

       一个文本框”txtMD5”,显示文件的MD5码;

//选择文件         private void btnOpenFile_Click(object sender, EventArgs e)         {             using (OpenFileDialog dialog = new OpenFileDialog())             {                 if (dialog.ShowDialog() == DialogResult.OK)                 {                     String fileName = dialog.FileName;                     this.txtMD5.Text = "";                     //this.txtSH1.Text = "";                     //                     this.txtMD5.Text = getMD5Hash(fileName);                     //this.txtSH1.Text = GetMD5Hash(fileName);                 }             }         }         //计算文件的MD5码         private string getMD5Hash(string pathName)         {             string strResult = "";             string strHashData = "";               byte[] arrbytHashValue;             System.IO.FileStream oFileStream = null;               System.Security.Cryptography.MD5CryptoServiceProvider oMD5Hasher =                        new System.Security.Cryptography.MD5CryptoServiceProvider();               try             {                 oFileStream = new System.IO.FileStream(pathName, System.IO.FileMode.Open,                       System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite));                 arrbytHashValue = oMD5Hasher.ComputeHash(oFileStream);//计算指定Stream 对象的哈希值                 oFileStream.Close();                 //由以连字符分隔的十六进制对构成的String,其中每一对表示value 中对应的元素;例如“F-2C-4A”                 strHashData = System.BitConverter.ToString(arrbytHashValue);                 //替换-                 strHashData = strHashData.Replace("-", "");                 strResult = strHashData;             }             catch (System.Exception ex)             {                 MessageBox.Show(ex.Message);             }               return strResult;         }

       本demo的文件EMOS_1.5_i386.iso,其官方MD5代码为c8b4494715166118bd94dd2a39e640c4,程序得到的md5代码为c8b4494715166118bd94dd2a39e640c4。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏安恒网络空间安全讲武堂

逆向专题 | Writeup分享一

逆向WP分享一 0x01.re4 首先我们先点开运行试玩一下,大意就是让你输入正确的用户名和密码就能拿到flag,接下来进入正题。 ? 丢进IDA中,先shi...

2409
来自专栏MasiMaro 的技术博文

PE解析器的编写(四)——数据目录表的解析

在PE结构中最重要的就是区块表和数据目录表,上节已经说明了如何解析区块表,下面就是数据目录表,在数据目录表中一般只关心导入表,导出表和资源这几个部分,但是资源实...

2552
来自专栏数据结构与算法

BZOJ1269: [AHOI2006]文本编辑器editor

Descriptio 这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器。你能帮助他吗? 为了明确任务目标,可可对“文本编辑器...

2857
来自专栏YG小书屋

Hadoop Streaming 读ORC文件

hadoop Streaming的处理流程是先通过inputFormat读出输入文件内容,将其传递mapper,再将mapper返回的key,value传给re...

1832
来自专栏数据分析

C# 调用PowerShell方法

PowerShell应为编写和运行都很方便,所以为了重复利用,经常写了一些小方法或者PS代码片段。使用的时候可能会很难找到自己想要的那个方法,如果要是有一个界面...

3904
来自专栏林德熙的博客

WPF 开发

如果使用NamedPipeServerStream、Mutex做单实例,需要传入字符串,这时如果传入一个固定的字符串,会在多用户的时候无法使用。

2251
来自专栏我杨某人的青春满是悔恨

走进 RxSwift 之观察者模式

RxSwift 是 ReactiveX 系列的 Swift 版本,如果你之前用过 ReactiveCocoa(RAC) 的话,想必对 Functional Re...

1942
来自专栏冰霜之地

iOS 如何实现Aspect Oriented Programming (上)

在“Runtime病院”住院的后两天,分析了一下AOP的实现原理。“出院”后,发现Aspect库还没有详细分析,于是就有了这篇文章,今天就来说说iOS 是如何实...

1492
来自专栏清晨我上码

异步任务执行的设计模式

2403
来自专栏Windows Community

Windows Community Toolkit 4.0 - DataGrid - Part01

在上面一篇 Windows Community Toolkit 4.0 - DataGrid - Overview 中,我们对 DataGrid 控件做了一个概...

1152

扫码关注云+社区

领取腾讯云代金券