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

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

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值。然而愚钝,不知道该如何实现,望大神看到之后能给予一些指导,万分感谢。

文件校验工具下载

时间: 2024-11-07 07:18:07

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

Android中带你开发一款自动爆破签名校验工具kstools

一.技术回顾 为了安全起见,一些应用会利用自身的签名信息对应用做一层防护,为了防止应用被二次打包操作,在之前已经介绍了很多关于应用签名校验爆破的方法,一条基本原则不能忘:全局搜索"signature"字符串,这里可以在Jadx打开apk搜索,也可以在IDA中打开so搜索都可以.找到这信息之后可以手动的修改校验逻辑,但是这个法则有个问题,就是如果一个应用在代码中很多地方都做了签名校验,比如以前介绍的一篇爆破游戏文章:Android中爆破应用签名信息案例分析,那时候就会发现,应用在很多地方

Android 中带你开发一款自动爆破签名校验工具 kstools

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Android中带你开发一款自动爆破签名校验工具kstools - 生死看淡,不服就干! - 博客频道 - CSDN.NET 生死看淡,不服就干! http://www.wjdiankong.cn 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &n

python tkinter 文件MD5校验工具

使用Python 2.7.10 tkinter 进行编写的"文件md5校验工具".由于自己的水平问题,可能会存在一些错误,恳请大家指正,谢谢. 图形界面: 源码: #coding: UTF-8 #python tkinter 文件MD5校验 #环境 Python 2.7.10  import Tkinter as tk import hashlib import  os import tkFileDialog as tkf def view_md5():  #计算结果显示方法     

iOS开发拓展篇—封装音频文件播放工具类

一.简单说明 1.关于音乐播放的简单说明 (1)音乐播放用到一个叫做AVAudioPlayer的类 (2)AVAudioPlayer常用方法 加载音乐文件 - (id)initWithContentsOfURL:(NSURL *)url error:(NSError **)outError; - (id)initWithData:(NSData *)data error:(NSError **)outError; 准备播放(缓冲,提高播放的流畅性) - (BOOL)prepareToPlay;

文件处理工具 gif合成工具 文件后缀批量添加工具 文件夹搜索工具 重复文件查找工具 网页图片解析下载工具等

以下都是一些简单的免费分享的工具,技术支持群:592132877,提供定制化服务开发. Gif动图合成工具 主要功能是扫描指定的文件夹里的所有zip文件,然后提取Zip文件中的图片,并合成一张gif图片,存储到新的路径下,支持设置gif的时间,演示效果如下: 下载地址:gif合成工具 文件批量移动工具 主要功能是将指定文件夹及子文件夹里所有文件,复制到新的文件夹下,可以指定是否删除源文件.以下动图演示效果. 下载地址:文件批量移动工具.exe 文件批量移动工具 主要功能是将指定目录下所有文件按照

Hash(MD5校验工具)

本站提供md5校验工具下载.Hash(md5校验工具)是一款小巧好用的哈希计算器,Hash支持文件拖放,速度很快,可以计算文件的MD5.SHA1.CRC32 的值.在论坛上.软件发布时经常用Hash md5校验工具,是为了保证文件的正确性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统.每个文件都可以用Hash验证程序算出一个固定的MD5码来. Hash md5是一款小巧好用的哈希计算器,也是一款md5校验工具.支持文件拖放,速度很快,可以计算文件的 MD5.SHA1.CRC32

侧栏工具条开发

我们能学到什么 1.使用Sass更好的书写CSS 2.使用RequireJS进行模块化开发,编写出方便复用的代码 3.使用CSS3实现简单的动画效果 ########################################################################################## 使用Sass编写css Sass的基础知识 将sass编译成css -- koala工具的使用 http://koala-app.com/index-zh.html 在

安装文件制作工具NSIS的使用总结

安装文件制作工具NSIS 使用总结 在给客户开发客户端软件时,为避免技术人员亲自上门安装带来额外的成本损耗,通常我们都会自作一个安装包,以确保我们开发的程序的相关依赖资源.环境在客户端运行前能自动地正确配置好. NSIS是一个比较流行的安装文件制作工具,制作简单,提供脚本语言来定义环境和程序的静态资源配置,使得安装文件可定制化, 并能根据自定义的脚本文件自动生成可执行的安装包, 大大地简化了程序员的发布工作. NSIS提供了多个脚本demo,可在UI上直接打开来查看其demo 并学习. 其脚本指

如何利用 Visual Studio 自带工具提高开发效率

原文:如何利用 Visual Studio 自带工具提高开发效率 Visual Stuido 是一款强大的Windows 平台集成开发工具,你是否好好地利用了它呢? 显示行号 有些时候(比如错误定位)的时候,显示行号将有利于我们进行快速定位. 如何显示 1. 工具 / 选项 / 文本编辑器 -> 选择对应的语言 2. 勾选 "行号" 使用书签 和平常意义的书签类似,当我们希望在日后某一时刻快速定位到一处代码时使用.比如在项目例会上,你需要演示本周你所做的一些改进,在开会前可以事先