CN116933331A - 一种基于wasm和web worker的多线程文件哈希方法 - Google Patents
一种基于wasm和web worker的多线程文件哈希方法 Download PDFInfo
- Publication number
- CN116933331A CN116933331A CN202310956155.1A CN202310956155A CN116933331A CN 116933331 A CN116933331 A CN 116933331A CN 202310956155 A CN202310956155 A CN 202310956155A CN 116933331 A CN116933331 A CN 116933331A
- Authority
- CN
- China
- Prior art keywords
- file
- calculated
- thread
- value
- fragments
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 239000012634 fragment Substances 0.000 claims abstract description 290
- 238000012545 processing Methods 0.000 claims abstract description 113
- 238000004364 calculation method Methods 0.000 claims abstract description 63
- 230000011218 segmentation Effects 0.000 claims abstract description 14
- 238000012544 monitoring process Methods 0.000 claims description 37
- 238000004458 analytical method Methods 0.000 claims description 33
- 238000012360 testing method Methods 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 description 7
- 230000002159 abnormal effect Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及电数字数据处理技术领域,提供了一种基于wasm和web worker的多线程文件哈希方法,包括:针对文件进行切分处理,得到多个文件分片;获取计算机的线程池中多线程数量;根据文件分片分配线程任务分配线程任务,并采用hash‑wasm遍历计算所有文件分片的MD5,得到文件分片MD5值;将文件分片MD5值按照顺序进行拼接,得到拼接后的MD5值;对拼接后的MD5值采用hash‑wasm计算SHA‑256值,并根据拼接后的MD5值和SHA‑256值得到文件哈希结果。本发明提出一种基于wasm和web worker的多线程文件哈希方法,利用多线程计算进行并行处理,提高了哈希方法的速度。
Description
技术领域
本发明涉及电数字数据处理技术领域,特别涉及一种基于wasm和web worker的多线程文件哈希方法。
背景技术
文件哈希计算在计算机文件数据传输过程中被广泛使用,用来计算文件的一个唯一标识、从而来验证文件的完整性一致性。在浏览器中进行文件上传的需求广泛存在。需要前端实现快速的文件哈希算法来校验文件完整性,当前前端的文件hash算法只能顺序读取文件进行计算,无法并行化,因此,本发明提出一种基于wasm(WebAssembly)和web worker的多线程文件哈希方法,利用多线程计算进行并行处理,提高了哈希方法的速度。
发明内容
本发明的目的在于提供一种基于wasm和web worker的多线程文件哈希方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于wasm和web worker的多线程文件哈希方法,包括:
针对文件进行切分处理,得到多个文件分片;
获取计算机的线程池中多线程数量;
根据文件分片分配线程任务分配线程任务,并采用hash-wasm遍历计算所有文件分片的MD5,得到文件分片MD5值;
将文件分片MD5值按照顺序进行拼接,得到拼接后的MD5值;
对拼接后的MD5值采用hash-wasm计算SHA-256值,并根据拼接后的MD5值和SHA-256值得到文件哈希结果。
进一步地,所述针对文件进行切分处理按照切分规则进行切分,在所述切分规则中,确定固定分片大小,根据固定分片大小生成分片引索,当最后一个文件分片小于固定分片大小时,将最后一个文件分片合并到上一个文件分片中。
进一步地,所述获取计算机中多线程数量时,读取计算机中线程的总数目,并在计算机线程中对一半数量的线程进行初始化处理。
进一步地,所述根据文件分片分配线程任务分配线程任务,包括:
初步分析文件分片,确定文件分片中待计算文件分片和已计算文件分片;
将待计算的文件分片形成待计算队列,并针对待计算队列进行队列初始化,得到初始化后的待计算队列,并得到分片索引信息;
针对初始化后的待计算队列遍历线程池分配线程任务,在线程池中针对线程进行自由调度。
进一步地,针对初始化后的待计算队列遍历线程池分配线程任务,包括:
遍历线程池,在线程中,分析判断待计算队列是否为空,当待计算队列不为空时,调取一个线程对待计算队列中的待计算文件分片进行MD5计算,然后再调取一个线程对待计算队列中下一个待计算文件分片进行MD5计算,直至待计算队列中的待计算文件分片全部进行完成MD5计算,其中,线程在对待计算文件分片进行MD5计算时,得到待计算文件分片的MD5值之后根据分片索引信息将待计算文件分片的MD5值记录到对应位置,线程发出停止信号,并将线程返回,同时根据停止信号判断是否结束MD5计算,当接收到的停止信号数目等于初始化处理的线程数目时进行MD5计算的线程结束。
进一步地,所述分片索引信息是针对所述文件生成的,包括所述文件的文件分片标题名称和文件分片的处理信息,在得到待计算文件分片的MD5值之后,根据待计算文件分片在索引信息中进行匹配,得到匹配结果,根据匹配结果锁定分片索引信息中待记录数据位置,针对待计算文件分片进行MD5计算的线程和锁定的分片索引信息中待记录数据位置建立映射关系,在所述线程中得到待计算文件分片的MD5值之后直接按照映射关系导入分片索引信息中待记录数据位置,在分片索引信息中实现对MD5值的记录。
进一步地,线程对待计算队列中的待计算文件分片进行MD5计算,包括:
针对待计算文件分片进行扩充处理,得到第一处理文件分片;
分析第一处理文件分片的排列特征,确定第一处理文件分片特征;
根据第一处理文件分片特征进行配置分析,分析线程与第一处理文件分片特征是否匹配,得到分析结果;
根据分析结果,当线程与第一处理文件分片特征匹配时,对第一处理文件分片进行MD5计算,得到待计算文件分片的MD5值,当线程与第一处理文件分片特征不匹配时,针对第一处理文件分片进行二次处理,将第一处理文件分片中的字节进行高低位分组,并针对高低位分组进行顺序调整,得到第二处理文件分片,对第二处理文件分片进行MD5计算,得到待计算文件分片的MD5值。
进一步地,所述将文件分片MD5值按照顺序进行拼接,包括:
确定文件分片MD5值;
利用文件分片MD5值针对文件分片进行检验,确定文件分片是否是完整的,得到检验结果;
根据检验结果进行文件分片序列确定,在检验结果为文件分片是完整的情况下将文件分按照文件分片在切分处理时的规则进行逆向组合,得到文件分片的原始序列;
按照文件分片的原始序列将文件分片MD5值组合在一起,得到拼接后的MD5值。
进一步地,对拼接后的MD5值采用hash-wasm计算SHA-256值,并根据拼接后的MD5值和SHA-256值得到文件哈希结果时,采用hash-wasm针对拼接后的MD5值进行SHA-256加密处理,产生一个256bit长度的散列值,得到SHA-256值,然后在拼接后的MD5值中确定最后一个文件分片的MD5值,将SHA-256值并最后一个文件分片的MD5值的后面,从而得到文件哈希结果。
进一步地,针对初始化后的待计算队列遍历线程池分配线程任务,还包括:针对线程进行进度监测,当线程池中的线程均在针对初始化后的待计算队列中的待计算文件分片进行MD5计算时,获取所有线程的进度监测数据,并根据进度监测数据针对线程进行序列排列,得到线程进度监测序列,然后针对线程进度序列进行监测分析,确定线程进度监测序列中进度大于预设界值的线程,得到目标线程,将针对初始化后的待计算队列中的待计算文件分片下发到目标线程中,并更新线程进度监测序列,然后在更新后的线程进度监测序列中继续进行监测分析,重复循环直至初始化后的待计算队列中的待计算文件分片变成空的。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明所述的一种基于wasm和web worker的多线程文件哈希方法的步骤示意图;
图2为本发明所述的一种基于wasm和web worker的多线程文件哈希方法中步骤三的部分步骤示意图;
图3为本发明所述的一种基于wasm和web worker的多线程文件哈希方法中步骤三的部分流程示意图;
图4为本发明所述的一种基于wasm和web worker的多线程文件哈希方法中步骤四的示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
如图1所示,本发明实施例提供了一种基于wasm和web worker的多线程文件哈希方法,包括:
步骤一、针对文件进行切分处理,得到多个文件分片;
步骤二、获取计算机的线程池中多线程数量;
步骤三、根据文件分片分配线程任务分配线程任务,并采用hash-wasm遍历计算所有文件分片的MD5,得到文件分片MD5值;
步骤四、将文件分片MD5值按照顺序进行拼接,得到拼接后的MD5值;
步骤五、对拼接后的MD5值采用hash-wasm计算SHA-256值,并根据拼接后的MD5值和SHA-256值得到文件哈希结果。
上述技术方案提供了一种基于wasm和web worker的多线程文件哈希方法,在对文件进行多线程文件哈希时,首选获得进行多线程文件哈希的文件,将文件通过切分处理化成多个文件切片,然后获取计算机的线程池中用啦进行文件哈希的线程数目,接着根据文件分片分配线程任务分配线程任务,将文件分片与线程进行匹配,并且针对匹配的线程和文件分片,采用hash-wasm遍历计算所有文件分片的MD5,从而得到文件分片MD5值;接着每个文件分片得到的对应的文件分片MD5值按照顺序拼接起来,将文件分片MD5值组合到一起得到拼接后的MD5值,最后对拼接后的MD5值采用hash-wasm计算SHA-256值,并根据拼接后的MD5值和SHA-256值得到文件哈希结果。
上述技术方案通过针对文件进行切分处理和获取计算机的线程池中多线程数量使得在对文件进行哈希算法时能够针对文件分片采用多个线程进行处理,从而充分利用多线程计算提高了现有哈希方法的速度,并且每个文件分片在线程中进行处理时是相互独立的,使得不同的文件分片在不同的线程中能够同时进行,进而避免了文件分片按照顺序等待线程进行处理的时间,有效提高了文件哈希的效率,而且采用hash-wasm遍历计算所有文件分片的MD5和采用hash-wasm计算SHA-256值能够在浏览器端运行的低级汇编语言,使得更加接近原生程序的性能,并且能够运行为栈式虚拟机设计的二进制指令,无需过高的要求就能够实现,此外,通过对拼接后的MD5值采用hash-wasm计算SHA-256值使得在文件哈希结果中增加进去一个基于拼接后的MD5值得到的SHA-256值,提高了文件哈希结果的加密效果,增加了文件的安全性。
本发明提供的一个实施例中,所述针对文件进行切分处理按照切分规则进行切分,在所述切分规则中,确定固定分片大小,根据固定分片大小生成分片引索,当最后一个文件分片小于固定分片大小时,将最后一个文件分片合并到上一个文件分片中。
上述技术方案在针对文件进行切分处理时,按照切分规则将文件切分成多个文件分片,在切分规则中,确定固定分片大小,根据固定分片大小生成分片引索,将文件切分成多个文件分片,如果最后一个文件分片的大小与固定分片大小相等,则无需针对最后一个文件分片进行处理,如果最后一个文件分片的大小比固定分片大小小,则将最后一个文件分片合并到上一个文件分片中。
上述技术方案在对文件进行切分处理时,按照切分规则进行切分使得将文件分成多个文件分片进而使得在对文件进行哈希处理时能够同时针对文件分片进行处理,进而提高文件处理的效率,使得在较短时间内完成文件处理,而且将文件分成固定的大小方便进行统一的处理,并且在最后一个文件分片小于固定分片大小时,将最后一个文件分片合并到上一个文件分片中,能够使得避免最后一个文件分片太小在后续处理过程中消耗过多时间,因单个文件分片影响整体进度。
本发明提供的一个实施例中,所述获取计算机中多线程数量时,读取计算机中线程的总数目,并在计算机线程中对一半数量的线程进行初始化处理。
上述技术方案在获取计算机中多线程数量时,读取计算机中线程的总数目,确定计算机中包含的线程数目,然后将计算机线程中一半数量的线程进行初始化处理。
其中,将计算机线程中一半数量的线程进行初始化处理时,确定进行初始化处理的线程,得到待初始化线程,依次针对待初始化线程进行控件检测,确定控件是否异常,得到控件检测结果,根据控件检测结果,当待初始化线程出现控件异常时,在计算机剩余的一半线程中选择一个针对该线程进行替换,当待初始化线程未出现控件异常时,分析待初始化线程的当前状态,如果待初始化线程的当前状态与目标状态存在相似,则针对待初始化线程进行低级格式化,如果待初始化线程的当前状态与目标状态不存在相似,则针对待初始化线程进行高级格式化,其中,目标状态即为线程在对待计算文件分片进行MD5计算时控件的设置状态,低级格式化即为将待初始化线程部分设置恢复默认状态,高级格式化即为将待初始化线程全部设置恢复默认状态。
上述技术方案通过多个线程可以同时在线程中进行处理,而且通过对线程进行初始化处理可以消除线程以前进行处理的设置,对线程进行新的处理设置,避免以前的处理设置对新的处理造成影响,减小新的处理中的误差,确保了线程处理的精准性。此外,将计算机线程中一半数量的线程进行初始化处理时,通过针对待初始化线程进行控件检测从而确保进行初始化的线程是可以正常使用的,避免线程异常影响后续的使用,同时也能避免对异常线程进行初始化造成时间上的浪费,而且在对线程进行初始化时,通过分析待初始化线程的当前状态进行高级格式化和低级格式化,使得基于线程当前的状态能够在不影响新的处理设置的情况下重复利用共同的设置。
如图2所示,本发明提供的一个实施例中,所述根据文件分片分配线程任务分配线程任务,包括:
S301、初步分析文件分片,确定文件分片中待计算文件分片和已计算文件分片;
S302、将待计算的文件分片形成待计算队列,并针对待计算队列进行队列初始化,得到初始化后的待计算队列,并得到分片索引信息;
S303、针对初始化后的待计算队列遍历线程池分配线程任务,在线程池中针对线程进行自由调度。
上述技术方案在根据文件分片分配线程任务分配线程任务时,首先,初步分析文件分片,确定文件分片中待计算文件分片和已计算文件分片;然后,将待计算的文件分片排列成一队,形成待计算队列,针对待计算队列进行队列初始化,得到初始化后的待计算队列,并针对初始化后的待计算队列得到分片索引信息;接着,针对初始化后的待计算队列遍历线程池分配线程任务,在线程池中针对线程进行自由调度。
上述技术方案通过初步分析文件分片将文件分片分为待计算文件分片和已计算文件分片,使得只针对待计算文件分片进行处理,从而减少已计算文件分片的赘余,而且将待计算的文件分片形成待计算队列能够使得待计算文件分片有序进行计算,避免文件分片在进行计算时出现一个文件分片多次计算或者文件分片漏过计算的混乱现象,而且通过针对待计算队列进行队列初始化使得能够针对待计算队列重新进行入队出队参数设置,从而避免其他设置对待计算队列的影响。
本发明提供的一个实施例中,针对初始化后的待计算队列遍历线程池分配线程任务,包括:
遍历线程池,在线程中,分析判断待计算队列是否为空,当待计算队列不为空时,调取一个线程对待计算队列中的待计算文件分片进行MD5计算,然后再调取一个线程对待计算队列中下一个待计算文件分片进行MD5计算,直至待计算队列中的待计算文件分片全部进行完成MD5计算,其中,线程在对待计算文件分片进行MD5计算时,得到待计算文件分片的MD5值之后根据分片索引信息将待计算文件分片的MD5值记录到对应位置,线程发出停止信号,并将线程返回,同时根据停止信号判断是否结束MD5计算,当接收到的停止信号数目等于初始化处理的线程数目时进行MD5计算的线程结束。
上述技术方案在针对初始化后的待计算队列遍历线程池分配线程任务时要遍历线程池,在线程中,分析判断待计算队列是否为空,如果待计算队列不为空,则调取一个线程对待计算队列中的待计算文件分片进行MD5计算,然后再调取一个线程对待计算队列中下一个待计算文件分片进行MD5计算,直至待计算队列中的待计算文件分片全部进行完成MD5计算,如果待计算队列为空,则不存在待计算的文件分片,无需进行线程调取。其中,线程在对待计算文件分片进行MD5计算时,得到待计算文件分片的MD5值之后根据分片索引信息将待计算文件分片的MD5值记录到对应位置,线程发出停止信号,并将线程返回,线程发出停止信号之后还根据停止信号判断是否结束MD5计算,如果接收到的停止信号数目等于初始化处理的线程数目时,则结束进行MD5计算的线程。
上述技术方案通过遍历线程池使得针对线程池中的线程都能够对计算队列中待计算文件分片进行MD5计算,从而提高对文件分片进行MD5计算的效率,使得能够在较短时间内得到文件分片MD5值,进而提高多线程文件哈希方法的效率,而且多个线程可以同时针对不同的文件分片进行MD5计算,有效提高MD5计算的效率,并且还在得到待计算文件分片的MD5值之后记录到分片索引信息中,使得在分片索引信息中体现更多关于文件分片的信息,方便对文件分片进行检索确定。此外,通过对停止信号的判断从而明确线程是否完成了MD5计算,从而能够在线程完成MD5计算之后及时进行后续处理,避免造成时间浪费,同时也能够避免在线程未完成MD5计算时就进行后续处理导致后续处理中数据信息不完整影响最终结果的准确性。
本发明提供的一个实施例中,所述分片索引信息是针对所述文件生成的,包括所述文件的文件分片标题名称和文件分片的处理信息,在得到待计算文件分片的MD5值之后,根据待计算文件分片在索引信息中进行匹配,得到匹配结果,根据匹配结果锁定分片索引信息中待记录数据位置,针对待计算文件分片进行MD5计算的线程和锁定的分片索引信息中待记录数据位置建立映射关系,在所述线程中得到待计算文件分片的MD5值之后直接按照映射关系导入分片索引信息中待记录数据位置,在分片索引信息中实现对MD5值的记录。
上述技术方案中的分片索引信息是针对文件生成的,分片索引信息包括:文件的文件分片标题名称和文件分片的处理信息,在得到待计算文件分片的MD5值之后,根据待计算文件分片在索引信息中进行匹配,从而得到匹配结果,根据匹配结果锁定分片索引信息中待记录数据位置,然后针对待计算文件分片进行MD5计算的线程和锁定的分片索引信息中待记录数据位置建立映射关系,在线程中得到待计算文件分片的MD5值之后直接按照映射关系导入分片索引信息中待记录数据位置,进而在分片索引信息中实现对MD5值的记录。
其中,在根据待计算文件分片在索引信息中进行匹配时,根据文件分片标题名称在索引信息中进行匹配,首先,针对待计算文件分片的文件分片标题名称和文件索引信息中的文件分片标题名称进行信息预处理,将文件分片标题名称以字符串的形式进行呈现,得到待计算文件分片的字符串和文件索引信息字符串集;然后根据待计算文件分片的字符串通过如下公式在文件索引信息字符串集中进行目标锁定:
ni=C(A∩Bi)
上述公式中,ni表示待计算文件分片的文件分片标题名称与文件索引信息中第i个文件分片标题名称之间相同字符数目,A表示待计算文件分片的字符串,Bi表示文件索引信息中第i个文件分片标题名称的字符串,C表示数量计量函数,Yi表示待计算文件分片的文件分片标题名称与文件索引信息中第i个文件分片标题名称之间的适配度,C(A)表示待计算文件分片的字符串长度,C(Bi)表示表示文件索引信息中第i个文件分片标题名称的字符串长度,k表示换位数目,si表示待计算文件分片的字符串与文件索引信息中第i个文件分片标题名称的字符串共同的前缀字符数目,w表示缩放因子常量。
接着根据得到的待计算文件分片的文件分片标题名称与文件索引信息中第i个文件分片标题名称之间的适配度Yi进行降幂排列,将排列中最大值作为优选分析目标,在优选分析目标中将最大值Yi此时对应的文件索引信息中第i个文件分片标题名称作为锁定目标,进而针对锁定目标进行文件分片的处理信息记录,在得到待计算文件分片的MD5值之后根据分片索引信息将待计算文件分片的MD5值记录到对应位置。
上述技术方案通过建立对待计算文件分片进行MD5计算的线程和锁定的分片索引信息中待记录数据位置之间的映射关系使得在线程得到MD5值之后自动将MD5值录入到分片索引信息对应的文件分片的信息中,不仅效率高,而且还无需人为输入,节省人力成本消耗,并且还不容易出现信息录入错误。此外,在根据待计算文件分片在索引信息中进行匹配时按照名称进行匹配,避免文件分片内容过长消耗太多时间进行匹配,而且在分片索引信息中也是以文件分片名称进行记录,避免分片索引信息中包含大量文字信息,使得分片索引信息更加简洁,同时也能够在较短时间内实现匹配,提高匹配的效率,加快分片索引记录的效率,并且以字符串的形式方便进行直观分析计算,使得能够直接得到一个客观的数据方便进行比较。
本发明提供的一个实施例中,线程对待计算队列中的待计算文件分片进行MD5计算,包括:
针对待计算文件分片进行扩充处理,得到第一处理文件分片;
分析第一处理文件分片的排列特征,确定第一处理文件分片特征;
根据第一处理文件分片特征进行配置分析,分析线程与第一处理文件分片特征是否匹配,得到分析结果;
根据分析结果,当线程与第一处理文件分片特征匹配时,对第一处理文件分片进行MD5计算,得到待计算文件分片的MD5值,当线程与第一处理文件分片特征不匹配时,针对第一处理文件分片进行二次处理,将第一处理文件分片中的字节进行高低位分组,并针对高低位分组进行顺序调整,得到第二处理文件分片,对第二处理文件分片进行MD5计算,得到待计算文件分片的MD5值。
如图3所示,上述技术方案中的线程在对待计算队列中的待计算文件分片进行MD5计算时,首先针对待计算文件分片进行扩充处理,将待计算文件分片扩充成固定长度,得到第一处理文件分片;然后分析第一处理文件分片的排列特征,确定第一处理文件分片特征;接着,根据第一处理文件分片特征进行配置分析,分析线程与第一处理文件分片特征是否匹配,得到分析结果;最后,根据分析结果,如果线程与第一处理文件分片特征匹配,则对第一处理文件分片进行MD5计算,得到待计算文件分片的MD5值,如果线程与第一处理文件分片特征不匹配,则针对第一处理文件分片进行二次处理,将第一处理文件分片中的字节进行高低位分组,并针对高低位分组进行顺序调整,得到第二处理文件分片,对第二处理文件分片进行MD5计算,得到待计算文件分片的MD5值。
其中,分析第一处理文件分片的排列特征时还针对第一处理文件进行重要性分析,获取第一处理文件分片中的文件信息,并针对第一处理文件分片中的文件信息进行词语提取,得到文件分片的关键词语,然后通过如下公式针对第一处理文件分片进行重要分析:
上述公式中,Ue表示第e个第一处理文件分片的重要分析值;C表示数量计量函数;Rej表示第j个关键词语在第e个第一处理文件分片中出现的次数;log表示对数函数;N表示第一处理文件分片的数目;He表示第e个第一处理文件分片中关键词语的数目;p表示判断阈值,其大小根据第e个第一处理文件分片中关键词语的数目确定的;dej表示第e个第一处理文件分片中第j个关键词语;
进而在根据第一处理文件分片特征进行配置分析时结合第一处理文件分片的重要分析值Ui选择匹配线程。
上述技术方案中线程对待计算队列中的待计算文件分片进行MD5计算时,通过分析第一处理文件分片的排列特征明确第一处理文件分片特征使得线程进行处理的文件分片是相匹配的,从而避免数据与线程不匹配影响线程的处理效率和准确性,进而确保了线程对待计算队列中的待计算文件分片进行MD5计算的顺利进行和提高MD5值的准确性。此外,在根据第一处理文件分片特征进行配置分析时结合第一处理文件分片的重要分析值选择匹配线程从而确保线程对对第一处理文件分片进行MD5计算时能够更加全面和准确的对第一处理文件分片进行计算,避免MD5计算过程出现数据丢失与遗漏现象,提高了线程与第一处理文件分片的适配性。
如图4所示,本发明提供的一个实施例中,所述将文件分片MD5值按照顺序进行拼接,包括:
S401、确定文件分片MD5值;
S402、利用文件分片MD5值针对文件分片进行检验,确定文件分片是否是完整的,得到检验结果;
S403、根据检验结果进行文件分片序列确定,在检验结果为文件分片是完整的情况下将文件分按照文件分片在切分处理时的规则进行逆向组合,得到文件分片的原始序列;
S404、按照文件分片的原始序列将文件分片MD5值组合在一起,得到拼接后的MD5值。
上述技术方案在将文件分片MD5值按照顺序进行拼接时,要先确定文件分片MD5值,然后利用文件分片MD5值针对文件分片进行检验,确定文件分片是否是完整的,如果文件分片是完整的,则检验结果为通过,如果文件分片不是完整的,则检验结果为不通过,从而得到检验结果,根据检验结果在检验结果为通过的情况下进行文件分片序列确定,将文件分按照文件分片在切分处理时的规则进行逆向组合,得到文件分片的原始序列,然后再按照文件分片的原始序列将文件分片MD5值组合在一起,得到拼接后的MD5值。
上述技术方案在将文件分片MD5值按照顺序进行拼接时通过利用文件分片MD5值针对文件分片进行检验从而确保了文件分片的完整性,进而避免不完整的文件分片对结果的影响,而且在将文件分片MD5值组合时针对文件分按照文件分片在切分处理时的规则进行逆向组合从而明确文件分片在获取时的切分情况,使得文件分片的原始序列于文件是一致的,进而使得文件分片MD5值在组合时能够按照文件分片在文件中的顺序进行组合。
本发明提供的一个实施例中,对拼接后的MD5值采用hash-wasm计算SHA-256值,并根据拼接后的MD5值和SHA-256值得到文件哈希结果时,采用hash-wasm针对拼接后的MD5值进行SHA-256加密处理,产生一个256bit长度的散列值,得到SHA-256值,然后在拼接后的MD5值中确定最后一个文件分片的MD5值,将SHA-256值并最后一个文件分片的MD5值的后面,从而得到文件哈希结果。
上述技术方案在对拼接后的MD5值采用hash-wasm计算SHA-256值,并根据拼接后的MD5值和SHA-256值得到文件哈希结果时,采用hash-wasm针对拼接后的MD5值进行SHA-256加密处理,从而产生一个256bit长度的散列值,得到SHA-256值,然后在拼接后的MD5值中确定最后一个文件分片的MD5值,将SHA-256值并最后一个文件分片的MD5值的后面,从而得到文件哈希结果。
上述技术方案采用hash-wasm针对拼接后的MD5值进行SHA-256加密处理使得SHA-256加密处理能够在浏览器端就能够实现,无需过高的性能要求,而且采用的是栈式虚拟机设计的二进制指令集,对于汇编语言的运行级别低,能够在web场景下很容易实现,而且进行SHA-256加密处理使得无论对于多少长度的拼接后的MD5值都能够返回一个固定字符长度的字符串,确保了文件哈希结果的统一长度,而且SHA-256加密处理是单向哈希函数,具有不可逆性,并且在被处理的数据发现变化时都无法得到相同的输出结果,具有较高的安全性,从而提高了文件hash结果的安全性。
本发明提供的一个实施例中,针对初始化后的待计算队列遍历线程池分配线程任务,还包括:针对线程进行进度监测,当线程池中的线程均在针对初始化后的待计算队列中的待计算文件分片进行MD5计算时,获取所有线程的进度监测数据,并根据进度监测数据针对线程进行序列排列,得到线程进度监测序列,然后针对线程进度序列进行监测分析,确定线程进度监测序列中进度大于预设界值的线程,得到目标线程,将针对初始化后的待计算队列中的待计算文件分片下发到目标线程中,并更新线程进度监测序列,然后在更新后的线程进度监测序列中继续进行监测分析,重复循环直至初始化后的待计算队列中的待计算文件分片变成空的。
上述技术方案在针对初始化后的待计算队列遍历线程池分配线程任务时,还针对线程进行进度监测,特别是在线程池中所有线程均在针对初始化后的待计算队列中的待计算文件分片进行MD5计算时,获取所有线程的进度监测数据,并根据进度监测数据针对线程进行序列排列,从而得到线程进度监测序列,然后针对线程进度序列进行监测分析,确定线程进度序列中各个线程进度与预设界值之间的大小关系,从而确定线程进度监测序列中进度大于预设界值的线程,得到目标线程,接着将针对初始化后的待计算队列中的待计算文件分片下发到目标线程中,并更新线程进度监测序列,然后在更新后的线程进度监测序列中继续进行监测分析,重复循环直至初始化后的待计算队列中的待计算文件分片变成空的。
上述技术方案通过针对线程进行进度监测使得线程在即将完整待计算文件分片MD5计算时就能够得到初始化后的待计算队列下发的待计算文件分片下,从而使得线程在完整MD5计算后能够及时针对下一个待计算文件分片进行MD5计算,从而减少衔接时间的浪费,而且在进行监测分析时,通过针对线程进行序列排列使得在出现线程进度出现两种情况交界线状况时就能够停止进行线程进度分析,提高了线程进度分析的效率。
本领域技术人员应当理解的是,本发明中的第一、第二仅仅指的是不同应用阶段而已。
本领域技术客户员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种基于wasm和web worker的多线程文件哈希方法,其特征在于,所述多线程文件哈希方法包括:
针对文件进行切分处理,得到多个文件分片;
获取计算机的线程池中多线程数量;
根据文件分片分配线程任务分配线程任务,并采用hash-wasm遍历计算所有文件分片的MD5,得到文件分片MD5值;
将文件分片MD5值按照顺序进行拼接,得到拼接后的MD5值;
对拼接后的MD5值采用hash-wasm计算SHA-256值,并根据拼接后的MD5值和SHA-256值得到文件哈希结果。
2.根据权利要求1所述的多线程文件哈希方法,其特征在于,所述针对文件进行切分处理按照切分规则进行切分,在所述切分规则中,确定固定分片大小,根据固定分片大小生成分片引索,当最后一个文件分片小于固定分片大小时,将最后一个文件分片合并到上一个文件分片中。
3.根据权利要求2所述的多线程文件哈希方法,其特征在于,所述获取计算机中多线程数量时,读取计算机中线程的总数目,并在计算机线程中对一半数量的线程进行初始化处理。
4.根据权利要求1所述的多线程文件哈希方法,其特征在于,所述根据文件分片分配线程任务分配线程任务,包括:
初步分析文件分片,确定文件分片中待计算文件分片和已计算文件分片;
将待计算的文件分片形成待计算队列,并针对待计算队列进行队列初始化,得到初始化后的待计算队列,并得到分片索引信息;
针对初始化后的待计算队列遍历线程池分配线程任务,在线程池中针对线程进行自由调度。
5.根据权利要求4所述的多线程文件哈希方法,其特征在于,针对初始化后的待计算队列遍历线程池分配线程任务,包括:
遍历线程池,在线程中,分析判断待计算队列是否为空,当待计算队列不为空时,调取一个线程对待计算队列中的待计算文件分片进行MD5计算,然后再调取一个线程对待计算队列中下一个待计算文件分片进行MD5计算,直至待计算队列中的待计算文件分片全部进行完成MD5计算,其中,线程在对待计算文件分片进行MD5计算时,得到待计算文件分片的MD5值之后根据分片索引信息将待计算文件分片的MD5值记录到对应位置,线程发出停止信号,并将线程返回,同时根据停止信号判断是否结束MD5计算,当接收到的停止信号数目等于初始化处理的线程数目时进行MD5计算的线程结束。
6.根据权利要求5所述的多线程文件哈希方法,其特征在于,所述分片索引信息是针对所述文件生成的,包括所述文件的文件分片标题名称和文件分片的处理信息,在得到待计算文件分片的MD5值之后,根据待计算文件分片在索引信息中进行匹配,得到匹配结果,根据匹配结果锁定分片索引信息中待记录数据位置,针对待计算文件分片进行MD5计算的线程和锁定的分片索引信息中待记录数据位置建立映射关系,在所述线程中得到待计算文件分片的MD5值之后直接按照映射关系导入分片索引信息中待记录数据位置,在分片索引信息中实现对MD5值的记录。
7.根据权利要求5所述的多线程文件哈希方法,其特征在于,线程对待计算队列中的待计算文件分片进行MD5计算,包括:
针对待计算文件分片进行扩充处理,得到第一处理文件分片;
分析第一处理文件分片的排列特征,确定第一处理文件分片特征;
根据第一处理文件分片特征进行配置分析,分析线程与第一处理文件分片特征是否匹配,得到分析结果;
根据分析结果,当线程与第一处理文件分片特征匹配时,对第一处理文件分片进行MD5计算,得到待计算文件分片的MD5值,当线程与第一处理文件分片特征不匹配时,针对第一处理文件分片进行二次处理,将第一处理文件分片中的字节进行高低位分组,并针对高低位分组进行顺序调整,得到第二处理文件分片,对第二处理文件分片进行MD5计算,得到待计算文件分片的MD5值。
8.根据权利要求1所述的多线程文件哈希方法,其特征在于,所述将文件分片MD5值按照顺序进行拼接,包括:
确定文件分片MD5值;
利用文件分片MD5值针对文件分片进行检验,确定文件分片是否是完整的,得到检验结果;
根据检验结果进行文件分片序列确定,在检验结果为文件分片是完整的情况下将文件分按照文件分片在切分处理时的规则进行逆向组合,得到文件分片的原始序列;
按照文件分片的原始序列将文件分片MD5值组合在一起,得到拼接后的MD5值。
9.根据权利要求1所述的多线程文件哈希方法,其特征在于,对拼接后的MD5值采用hash-wasm计算SHA-256值,并根据拼接后的MD5值和SHA-256值得到文件哈希结果时,采用hash-wasm针对拼接后的MD5值进行SHA-256加密处理,产生一个256bit长度的散列值,得到SHA-256值,然后在拼接后的MD5值中确定最后一个文件分片的MD5值,将SHA-256值并最后一个文件分片的MD5值的后面,从而得到文件哈希结果。
10.根据权利要求1所述的多线程文件哈希方法,其特征在于,针对初始化后的待计算队列遍历线程池分配线程任务,还包括:针对线程进行进度监测,当线程池中的线程均在针对初始化后的待计算队列中的待计算文件分片进行MD5计算时,获取所有线程的进度监测数据,并根据进度监测数据针对线程进行序列排列,得到线程进度监测序列,然后针对线程进度序列进行监测分析,确定线程进度监测序列中进度大于预设界值的线程,得到目标线程,将针对初始化后的待计算队列中的待计算文件分片下发到目标线程中,并更新线程进度监测序列,然后在更新后的线程进度监测序列中继续进行监测分析,重复循环直至初始化后的待计算队列中的待计算文件分片变成空的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310956155.1A CN116933331B (zh) | 2023-07-28 | 2023-07-28 | 一种基于wasm和web worker的多线程文件哈希方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310956155.1A CN116933331B (zh) | 2023-07-28 | 2023-07-28 | 一种基于wasm和web worker的多线程文件哈希方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116933331A true CN116933331A (zh) | 2023-10-24 |
CN116933331B CN116933331B (zh) | 2024-02-06 |
Family
ID=88382506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310956155.1A Active CN116933331B (zh) | 2023-07-28 | 2023-07-28 | 一种基于wasm和web worker的多线程文件哈希方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116933331B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107360191A (zh) * | 2017-08-28 | 2017-11-17 | 腾讯科技(深圳)有限公司 | 一种文件获取方法、装置及存储设备 |
WO2020134712A1 (zh) * | 2018-12-26 | 2020-07-02 | 阿里巴巴集团控股有限公司 | 区块链数据处理方法、装置及系统 |
CN116389455A (zh) * | 2023-03-02 | 2023-07-04 | 阿里巴巴(中国)有限公司 | 一种文件传输方法、系统及电子设备 |
CN116488795A (zh) * | 2023-06-19 | 2023-07-25 | 北京大禹智芯科技有限公司 | 一种gcm-aes处理方法和装置 |
-
2023
- 2023-07-28 CN CN202310956155.1A patent/CN116933331B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107360191A (zh) * | 2017-08-28 | 2017-11-17 | 腾讯科技(深圳)有限公司 | 一种文件获取方法、装置及存储设备 |
WO2020134712A1 (zh) * | 2018-12-26 | 2020-07-02 | 阿里巴巴集团控股有限公司 | 区块链数据处理方法、装置及系统 |
CN116389455A (zh) * | 2023-03-02 | 2023-07-04 | 阿里巴巴(中国)有限公司 | 一种文件传输方法、系统及电子设备 |
CN116488795A (zh) * | 2023-06-19 | 2023-07-25 | 北京大禹智芯科技有限公司 | 一种gcm-aes处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116933331B (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2014126822A1 (en) | Determining documents that match a query | |
CN105187533A (zh) | 一种数据传输的方法及装置 | |
US11567940B1 (en) | Cache-aware system and method for identifying matching portions of two sets of data in a multiprocessor system | |
CN111159497A (zh) | 正则表达式的生成方法及基于正则表达式的数据提取方法 | |
CN110264392B (zh) | 一种基于多gpu的强连通图检测方法 | |
CN111581155B (zh) | 数据入数据库的方法、装置和计算机设备 | |
CN116933331B (zh) | 一种基于wasm和web worker的多线程文件哈希方法 | |
CN112559482B (zh) | 一种基于分布式的二进制数据分类处理方法和系统 | |
CN116955538B (zh) | 医疗字典数据匹配方法及装置、电子设备及存储介质 | |
EP4044014A1 (en) | Data reduction method and apparatus, computing device, and storage medium | |
CN112199376B (zh) | 一种基于聚类分析的标准知识库管理方法及系统 | |
CN116756298B (zh) | 面向云数据库的ai会话信息优化方法及大数据优化服务器 | |
CN111767265B (zh) | 一种连接操作中数据倾斜方法、系统及计算机设备 | |
CN114116811B (zh) | 日志处理方法、装置、设备及存储介质 | |
CN116226681A (zh) | 一种文本相似性判定方法、装置、计算机设备和存储介质 | |
US6192374B1 (en) | Efficient implementations of constructs such as feature tables | |
CN115640278A (zh) | 一种数据库性能智能优化的方法及系统 | |
CN115168509A (zh) | 风控数据的处理方法及装置、存储介质、计算机设备 | |
CN111782609B (zh) | 一种快速将fastq文件均匀分片的方法 | |
CN105320562B (zh) | 一种基于作业特征指纹的分布式作业加速运行方法与系统 | |
CN107169313A (zh) | Dna数据文件的读取方法及计算机可读存储介质 | |
US20160232187A1 (en) | Dump analysis method, apparatus and non-transitory computer readable storage medium | |
CN113836157A (zh) | 获取数据库增量数据的方法和装置 | |
CN113342647A (zh) | 一种测试数据的生成方法及装置 | |
CN110021342B (zh) | 用于加速变异位点的识别的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |