之前刚开始学习编程的时候,总想着自己写一些小软件小工具。

而这个就是经典的文件MD5校验,顺便加上了一个SHA1。

在网络上下载一些东西时,会有作者提供MD5值。

它的作用就在于我们可以在下载该软件后,对下载回来的文件做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。

于是就需要一个MD5校验工具,那么就去百度上找,但是国内的下载站就不用说了...捆绑的东西防不胜防。

所以,作为一个程序员,就自己来写一个吧。

分析这个小工具的主要需求就是

1.根据路径找到文件

2.获取MD5

3.获取SHA1

非常简单的一个小工具,

第一个方法直接使用 FileInfo 类构造函数传入路径就可以了,因为是做控制台可以直接拖拽文件,这一点还是很方便的。

需要注意的是路径中有空格会报错。

该方法中 s 代表传入的文件路径

 static void GetFile(string s)
{
try
{
FileInfo fi = new FileInfo(s);
Console.WriteLine("文件路径:{0}", s);
Console.WriteLine("文件名称:{0}", fi.Name.ToString());
Console.WriteLine("文件类型:{0}", fi.Extension.ToString());
Console.WriteLine("文件大小:{0} K", fi.Length / );
Console.WriteLine("文件创建时间:{0}", fi.CreationTime.ToString());
Console.WriteLine("上次访问时间:{0}", fi.LastAccessTime.ToString());
Console.WriteLine("上次写入时间:{0}", fi.LastWriteTime.ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}

第二个方法获得MD5值,该方法中 s 代表传入的文件路径

MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。

 static void GetMD5(string s)
{
try
{
FileStream file = new FileStream(s,FileMode.Open);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] retval = md5.ComputeHash(file);
file.Close(); StringBuilder sc = new StringBuilder();
for (int i = ; i<retval.Length ; i++ )
{
sc.Append(retval[i].ToString("x2"));
}
Console.WriteLine("文件MD5:{0}",sc);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}

第三个方法,获得SHA1值,该方法中 s 代表传入的文件路径

SHA1名为安全哈希算法,对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。

SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要,(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略)。

 static void GetSHA1(string s)
{
try
{
FileStream file = new FileStream(s, FileMode.Open);
SHA1 sha1 = new SHA1CryptoServiceProvider();
byte[] retval = sha1.ComputeHash(file);
file.Close(); StringBuilder sc = new StringBuilder();
for (int i = ; i < retval.Length; i++)
{
sc.Append(retval[i].ToString("x2"));
}
Console.WriteLine("文件SHA1:{0}", sc);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}

放出我的成品,用的是.NET Framework 4.0,各位电脑上应该都有。

(密码:XVi7MD)

https://share.weiyun.com/98d8c10869e693961fb0df10c9202624

 

C# 获取文件MD5与SHA1的更多相关文章

  1. C# 获取文件MD5、SHA1

    /// <summary> /// 计算文件的 MD5 值 /// </summary> /// <param name="fileName"> ...

  2. C#获取文件MD5字符串

    备注 哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串.加密哈希函数有这样一个属性:在计算不大可能找到散列为相同的值的两个不同的输入:也就是说,两组数据的哈希值仅在对应的数据也匹配时才 ...

  3. QT 获取文件MD5值

    /* 方法1 */ QFile theFile(fileNamePath); theFile.open(QIODevice::ReadOnly); QByteArray ba = QCryptogra ...

  4. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  5. c#获取文件MD5算法

    //获取文件MD5算法 private static string GetMD5FromFile(string fileName) { try { FileStream file = new File ...

  6. C# 获取文件MD5值的方法

    可用于对比文件是否相同 /// <summary> /// 获取文件MD5值 /// </summary> /// <param name="fileName& ...

  7. 基于js-spark-md5前端js类库,快速获取文件Md5值

    js-spark-md5是歪果仁开发的东西,有点多,但是我们只要一个js文件即可,具体类包我存在自己的oschina上,下载地址:https://git.oschina.net/jianqingwan ...

  8. 获取文件MD5值(JS、JAVA)

    文章HTML代码翻译于地址:https://www.cnblogs.com/linyihai/p/7040786.html           文件MD5有啥用?                  文 ...

  9. Java 获取 文件md5校验码

    讯雷下载的核心思想是校验文件的md5值,两个文件若md5相同则为同一文件. 当得到用户下载某个文件的请求后它根据数据库中保留的文件md5比对出拥有此文件的url, 将用户请求挂接到此url上并仿造一个 ...

随机推荐

  1. db2 odbc连接设置

    参考:http://www.withdata.com/blog/tips/how-to-install-and-configure-db2-odbc-driver.html 驱动下载地址:https: ...

  2. SD卡初始化以及命令详解

    SD卡是嵌入式设备中很常用的一种存储设备,体积小,容量大,通讯简单,电路简单所以受到很多设备厂商的欢迎,主要用来记录设备运行过程中的各种信息,以及程序的各种配置信息,很是方便,有这样几点是需要知道的 ...

  3. CentOS6.x升级MySQL版本5.1到5.6

    CentOS6.x升级MySQL版本5.1到5.6 分类: Web MySQL 2014-08-04 11:22 2813人阅读 评论(1) 收藏 举报 mysql云服务器升级centos6 有一些虚 ...

  4. springMVC+Hibernate配置

    本文描述下 sypro 项目中使用 springMVC+Hibernate配置,初学SpringMVC做下简单整理解. 1.web项目首先我们要使用 web.xml文件将 spring配置引入进来 & ...

  5. 报错:Can't bind to local 8647 for debugger

    修改8600为8601,并且勾上Use ADBHOST

  6. 深入理解SQL的四种连接

    SQL标准 select table1.column,table2.column from table1 [inner | left | right | full ] join table2 on t ...

  7. UVa 143 - Orchard Trees

    题目大意:果园里的树排列成矩阵,它们的x和y坐标均是1~99的整数.输入若干三角形,依次统计每一个三角形内部和边界上共有多少棵树. 三角形P0P1P2有向面积为A:2A = x0y1 + x2y0 + ...

  8. 字符集UTF-8MB4 MySQL utf8mb4 字符集,用于存储emoji表情

    字符集UTF-8MB4 utf8mb4兼容utf8,且比utf8能表示更多的字符.看unicode编码区从1 - 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8m ...

  9. 利用 Grunt (几乎)无痛地做前端开发 (一)之单元测试

    前言 如果你想开发一个js应用,甭管多简单,都要先创建整个宇宙 来看看我们的Javascript小宇宙: 确定如何根据需求.功能划分模块,如何将代码分成多个文件开发,合成一个发布 保证上一条的同时,使 ...

  10. 无法打开登录 'ASPState' 中请求的数据库。登录失败。

    问题: 无法打开登录 'ASPState' 中请求的数据库.登录失败.用户 'WH\Administrator' 登录失败. 解决方法: (启动SQL Server Agent服务) 从本系统中找到: ...