自制【CRC32(C)多线程文件校验工具】操作演示

Description
这是一款由我用python编写,通过在分享前获取文件CRC32C校验值并记录在文件中,和在接受文件之后根据记录文件比对文件CRC32C的方式,方便文件分享者和接收者确认数据完整性、正确性的工具。

视频为此软件的操作演示。

注意!!
软件为了利用CPU中SSE4.2指令集的CRC32指令提升计算效率,降低CPU占用,因此用到的python库crc32c及其使用的CRC32C标准,和常用的CRC32(B)标准相比,也就是大多数压缩软件和校验程序提供的CRC32,有很大的区别,两者不能通用,也就是不能用常规的CRC32方来校验本程序生成的CRC32C记录,所以建议无论是记录还是之后的比对都不要离开本软件。
   关于crc32的CPU指令的详细介绍,参见下方这篇文章:
        基于Intel SSE4.2指令集crc32指令进行快速crc32c校验(使用Delphi/Fpc内联汇编实现)
        https://www.52pojie.cn/thread-1584310-1-1.html
        (出处: 吾爱破解论坛) 


软件链接:
①百度云:(完整资料,有演示视频,和视频中出现的音乐分享)
https://pan.baidu.com/s/1iBlKi5hV_kdkkzCgVjblYQ?pwd=0000
②蓝奏云:(因文件大小100M限制,只有软件自身、源码和一个说明用的txt文本文件)
https://wwm.lanzouq.com/b0ny5lvuf

工具基于python的wmi模块获取文件路径所在磁盘的数字编号,然后基于磁盘SMART工具“smartctl.exe"根据前面获取到的磁盘数字编号,获取对应磁盘的旋转速度、接口类型、是否为SSD的SMART属性,以此判断磁盘硬件类型(固态/机械),并合理分配同时读取的文件数(线程数)。
①在机械硬盘(HDD)上以单线程读取文件(逐个读取文件),降低机械盘寻道压力的同时,读取、计算校验的速度也能赶上机械盘自身的连续读取大文件的速度,和知名解压软件7-zip校验CRC的速度不相上下;

②而在nvme和SSD上以4线程读取文件(同时读取4个文件),在获取一个文件夹下的多个文件(递归)CRC值的场景下,相较于7-zip和已有的大部分校验软件,速度上应该会有显著提升,可以加快校验速度,节省时间。
在我自己电脑的nvme固态盘上测试,读取速度相较原来翻了一倍。4个线程也是我多次测试所得最优线程数。

③在不能读取识别明确硬件类型的磁盘上(U盘、虚拟磁盘……),以2线程读取文件(同时读取2个文件);
④识别磁盘硬件类型出错的情况下,以单线程运行。

Comments

星璇絮 2024-12-29

一小时的教程谁会去看啊

↩ 1