C# 获取文件MD5与SHA1

简介:

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

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

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

 1 static void GetFile(string s) 2         { 3             try 4             { 5                 FileInfo fi = new FileInfo(s); 6                 Console.WriteLine("文件路径:{0}", s); 7                 Console.WriteLine("文件名称:{0}", fi.Name.ToString()); 8                 Console.WriteLine("文件类型:{0}", fi.Extension.ToString()); 9                 Console.WriteLine("文件大小:{0} K", fi.Length / 1024);10                 Console.WriteLine("文件创建时间:{0}", fi.CreationTime.ToString());11                 Console.WriteLine("上次访问时间:{0}", fi.LastAccessTime.ToString());12                 Console.WriteLine("上次写入时间:{0}", fi.LastWriteTime.ToString());13             }14             catch (Exception ex) 
15             {16                 Console.WriteLine(ex.Message);17             }18         }

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

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

 1 static void GetMD5(string s) 2         { 3             try 4             { 5                 FileStream file = new FileStream(s,FileMode.Open); 6                 MD5 md5 = new MD5CryptoServiceProvider(); 7                 byte[] retval = md5.ComputeHash(file); 8                 file.Close(); 9 10                 StringBuilder sc = new StringBuilder();11                 for (int i = 0 ; i<retval.Length ; i++ )12                 {13                     sc.Append(retval[i].ToString("x2"));14                 }15                 Console.WriteLine("文件MD5:{0}",sc);16             }17             catch(Exception ex)18             {19                 Console.WriteLine(ex.Message);20             }21         }

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

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

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

 1 static void GetSHA1(string s) 2         { 3             try 4             { 5                 FileStream file = new FileStream(s, FileMode.Open); 6                 SHA1 sha1 = new SHA1CryptoServiceProvider(); 7                 byte[] retval = sha1.ComputeHash(file); 8                 file.Close(); 9 10                 StringBuilder sc = new StringBuilder();11                 for (int i = 0; i < retval.Length; i++)12                 {13                     sc.Append(retval[i].ToString("x2"));14                 }15                 Console.WriteLine("文件SHA1:{0}", sc);16             }17             catch (Exception ex)18             {19                 Console.WriteLine(ex.Message);20             }21         }





      本文转自zsdnr  51CTO博客,原文链接:http://blog.51cto.com/12942149/1929386,如需转载请自行联系原作者

相关文章
|
28天前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
11 0
|
1月前
|
C#
C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录
C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录
21 0
|
3月前
|
C#
C#读取html文件
C#读取html文件
28 3
|
3月前
|
C# 开发者
C# 10.0中的文件范围命名空间:简化代码组织的新方式
【1月更文挑战第18天】C# 10.0引入了文件范围的命名空间,这是一种新的语法糖,用于更简洁地组织和管理代码。文件范围命名空间允许开发者在每个文件的基础上定义命名空间,而无需显式使用花括号包裹整个文件内容。本文将深入探讨文件范围命名空间的工作原理、使用场景以及它们为C#开发者带来的便利。
|
5月前
|
C#
Visual Studio C# CS0006 C# 未能找到元数据文件
Visual Studio C# CS0006 C# 未能找到元数据文件
63 0
Visual Studio C# CS0006 C# 未能找到元数据文件
|
6月前
|
开发框架 .NET C#
利用WinDbg分析C#程序产生的转储文件
利用WinDbg分析C#程序产生的转储文件
|
4月前
|
IDE C# 开发工具
C# | 多线程批量下载文件(创建N个线程同时批量下载文件,只需要几行代码而已)
批量下载文件时使用多线程可以有效缩短完成时间,本文将讲解如何使用C#+CodePlus扩展库快速完成多线程的文件下载。 大部分代码由IDE自动生成,需要我们自己编写的代码正好**10行**。也就是说,只需要10分钟,就可以手撸一个多线程的批量下载器。
80 0
C# | 多线程批量下载文件(创建N个线程同时批量下载文件,只需要几行代码而已)
|
24天前
|
安全 数据处理 C#
C# Post数据或文件到指定的服务器进行接收
C# Post数据或文件到指定的服务器进行接收
|
24天前
|
C# 开发工具 数据安全/隐私保护
C#实现基于Word保护性模板文件的修改
C#实现基于Word保护性模板文件的修改
|
2月前
|
C#
C# Winform 选择文件夹和选择文件
C# Winform 选择文件夹和选择文件
43 0