星空网 > 软件开发 > ASP.net

文件校验工具的开发及问题

文件校验工具的开发及问题

1.加密算法的熟悉

    现在文件校验使用较多的是校验文件的MD5值和SHA1值,有些使用的还有CRC32,前些天微软发布了VisualStudio正式版,win10镜像,微软官方给出的校验方式都是校验文件的SHA1值

       C#进行MD5加密与SHA加密的实现总结在这里

 

2.文件的加密计算

知道了如何进行普通字符串的加密还不够,我们要校验的文件的MD5值或SHA1值,接下来熟悉如何获取文件的MD5值和SHA1值

 

  • 获取文件的MD5值

    

 1     public static string GetFileMD5(string filePath) 2     { 3       MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); 4       FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); 5       byte[] result = md5.ComputeHash(fs); 6       md5.Clear(); 7       StringBuilder sb = new StringBuilder(32); 8       for (int i = 0; i < result.Length; i++) 9       {10         sb.Append(result[i].ToString("X2"));11       }12       return sb.ToString();13     }

 

 

 

  • 获取文件的SHA1值

 

 1     public static string GetFileSHA1(string filePath) 2     { 3       SHA1 sha1 = new SHA1CryptoServiceProvider(); 4       FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); 5       byte[] result = sha1.ComputeHash(fs); 6       sha1.Clear(); 7       StringBuilder sb = new StringBuilder(32); 8       for (int i = 0; i < result.Length; i++) 9       {10         sb.Append(result[i].ToString("X2"));11       }12       return sb.ToString();13     }

 

 

 


 

3.文件加密数据结构优化


这么多方法,有许多方法大多数代码还都是重复的,如何让代码更精简呢?重构,提高代码的复用率,最初想的是建一个基类,其他各种具体实现都在继承它,但又觉得好麻烦,要新建好几个类,最终决定,建一个类,用最简单的重构,封装方法。

最终加密帮助类实现代码如下:

 

 

 1   public static class ValidHelper 2   { 3     public static string GetFileHash(string filePath, HashAlgorithm algorithm) 4     { 5       FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); 6       byte[] result = algorithm.ComputeHash(fs); 7       algorithm.Clear(); 8       StringBuilder sb = new StringBuilder(32); 9       for (int i = 0; i < result.Length; i++)10       {11         sb.Append(result[i].ToString("X2"));12       }13       return sb.ToString();14     }15 16     public static string GetFileMD5(string filePath)17     {18       MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();19       return GetFileHash(filePath, md5);20     }21 22     public static string GetFileSHA1(string filePath)23     {24       SHA1 sha1 = new SHA1CryptoServiceProvider();25       return GetFileHash(filePath, sha1);26     }27 28     public static string GetFileSHA256(string filePath)29     {30       SHA256 sha256 = SHA256.Create();31       return GetFileHash(filePath, sha256);32     }33 34     public static string GetFileSHA384(string filePath)35     {36       SHA384 sha384 = SHA384.Create();37       return GetFileHash(filePath, sha384);38     }39 40     public static string GetFileSHA512(string filePath)41     {42       SHA512 sha512 = SHA512.Create();43       return GetFileHash(filePath, sha512);44     }45   }

 

4.完成后测试与分析

代码完成之后便是测试,在网上找一个文件校验工具(使用的软媒魔方里的校验工具),进行比对,看自己的校验工具是否与软媒魔方的校验工具的校验结果是否一致,经校验,没有错误,最初测试的小文件,后来下载了一个win10系统,使用自己的校验工具,校验是否和微软官方给出的SHA1值一致时,小工具直接卡死了,过了好长时间才出来结果,这说明这个小工具还待优化,尤其是处理大文件。

在网上查找资料,看到有这样的实现思路,将文件在内存中的位置分段,比如说分成5段,分5个线程同时开始计算,最后将5个计算值再经过处理得到整个文件的SHA1值或MD5值。然而愚钝,不知道该如何实现,望大神看到之后能给予一些指导,万分感谢。

 

文件校验工具下载




原标题:文件校验工具的开发及问题

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

VAT税务税务筹划方法及其实施方法:https://www.kjdsnews.com/a/1341189.html
VAT税务知识普及如何正确缴纳VAT税款:https://www.kjdsnews.com/a/1341190.html
VAT税务知识普及介绍企业如何正确缴纳税款:https://www.kjdsnews.com/a/1341191.html
VAT税务知识大全详细了解VAT税收知识:https://www.kjdsnews.com/a/1341192.html
VAT税务知识大全掌握最新税收知识:https://www.kjdsnews.com/a/1341193.html
Vat税务登记的正确分录方法:https://www.kjdsnews.com/a/1341194.html
黄仁勋问答全文:关于中国市场、全球供应链、奥特曼和Groq :https://www.kjdsnews.com/a/1836443.html
200万上下文!月之暗面Kimi又长长长了:一次处理500个文件 还能读懂甄嬛传 :https://www.kjdsnews.com/a/1836444.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流