而这个就是典范的文件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 / 1024); 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 = 0 ; 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 = 0; i < retval.Length; i++) { sc.Append(retval[i].ToString("x2")); } Console.WriteLine("文件SHA1:{0}", sc); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
以上就是详解引见C#是怎样猎取文件MD5与SHA1的细致内容,更多请关注ki4网别的相干文章!