CN108196975B - 基于多校验和的数据验证方法、装置及存储介质 - Google Patents
基于多校验和的数据验证方法、装置及存储介质 Download PDFInfo
- Publication number
- CN108196975B CN108196975B CN201711171385.8A CN201711171385A CN108196975B CN 108196975 B CN108196975 B CN 108196975B CN 201711171385 A CN201711171385 A CN 201711171385A CN 108196975 B CN108196975 B CN 108196975B
- Authority
- CN
- China
- Prior art keywords
- data
- checksum
- memory
- verified
- memory checksum
- 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.)
- Active
Links
Images
Classifications
-
- 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
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种基于多校验和的数据验证方法、装置及存储介质,所述方法包括:通过获取数据读取指令,从预设类型存储单元中读取待验证数据及原始内存校验和,所述原始内存校验和由所述待验证数据生成;根据所述待验证数据生成当前内存校验和;将所述原始内存校验和与所述当前内存校验和进行比较,根据比较结果对所述待验证数据的完整性进行验证。由于在各种类型的存储单元中读取的数据均进行了数据完整性验证,能够及时发现数据是否发生错误。
Description
技术领域
本发明涉及数据验证技术领域,尤其涉及一种基于多校验和的数据验证方法、装置及存储介质。
背景技术
数据完整性是指存储在数据库中的所有数值均正确的状态,是数据在其整个生命周期中的准确性和一致性的维护和保证,并且是存储、处理或检索任何***的设计,实现和使用的关键。因此,保持数据完整性是现代存储***最重要的职责,随即各种各样的技术被开发和应用来改进数据完整性保护。其中最常用、最受欢迎的就是校验和方法。
校验和是从数据块导出的小块基准,用于检测在其传输或存储期间可能引入的错误。传统的针对存储***的校验和方法一般是端到端校验,在应用程序把数据传给后端***接口开始,使用校验和保护;之后一直到数据被读出才使用校验和进行验证。这样的校验和方法存在缺陷,比如发现错误慢,如果数据不返回的话,就一直无法进行校验和验证,不能及时发现数据错误。
发明内容
本发明的主要目的在于提出一种基于多校验和的数据验证方法、装置及存储介质,旨在解决现有技术中不能及时发现数据错误的技术问题。
为实现上述目的,本发明提供一种基于多校验和的数据验证方法,所述方法包括以下步骤:
获取数据读取指令,从预设类型存储单元中读取待验证数据及原始内存校验和,所述原始内存校验和由所述待验证数据生成;
根据所述待验证数据生成当前内存校验和;
将所述原始内存校验和与所述当前内存校验和进行比较,根据比较结果对所述待验证数据的完整性进行验证。
优选地,所述预设类型存储单元为内存;
相应地,所述从预设类型存储单元中读取待验证数据及原始内存校验和,具体包括:
从所述内存中读取第一数据及第一内存校验和,并将所述第一数据作为所述待验证数据,将所述第一内存校验和作为所述原始内存校验和。
优选地,所述从所述内存中读取第一数据及第一内存校验和之前,所述基于多校验和的数据验证方法还包括:
获取第一数据,接收第一写入指令,根据所述第一数据生成所述第一内存校验和,将所述第一数据及所述第一内存校验和写入所述内存中。
优选地,所述预设类型存储单元为外存;
相应地,所述从预设类型存储单元中读取待验证数据及原始内存校验和,具体包括:
从所述外存中读取第二数据及第二内存校验和,并将所述第二数据作为所述待验证数据,将所述第二内存校验和作为所述原始内存校验和。
优选地,所述从所述外存中读取第二数据及第二内存校验和,具体包括:
从所述外存中读取第二数据、第二内存校验和及第一外存校验和;
相应地,所述从所述外存中读取第二数据及第二内存校验和,并将所述第二数据作为所述待验证数据,将所述第二内存校验和作为所述原始内存校验和之后,所述基于多校验和的数据验证方法还包括:
根据所述待验证数据生成当前外存校验和,将所述第一外存校验和与所述当前外存校验和进行比较;
当所述第一外存校验和与所述当前外存校验和一致时,认定所述待验证数据完整;
当所述第一外存校验和与所述当前外存校验和不一致时,执行所述根据所述待验证数据生成当前内存校验和的步骤。
优选地,所述从所述外存中读取第二数据、第二内存校验和及第一外存校验和之前,所述基于多校验和的数据验证方法还包括:
获取第二数据,接收第二写入指令,根据所述第二数据生成所述第二内存校验和与所述第一外存校验和;
将所述第二数据、第二内存校验和及所述第一外存校验和写入所述外存中。
优选地,所述根据比较结果对所述待验证数据的完整性进行验证之后,所述基于多校验和的数据验证方法还包括:
当验证结果为所述待验证数据完整时,将所述待验证数据及原始内存校验和写入读缓存中。
优选地,所述获取数据读取指令之前,所述基于多校验和的数据验证方法还包括:
接收下发请求,判断所述下发请求中是否包含所述原始内存校验和;
在包含所述原始内存校验和时,从所述下发请求中提取所述待验证数据及所述原始内存校验和,并将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中;
在不包含所述原始内存校验和时,从所述下发请求中提取所述待验证数据,根据所述待验证数据生成所述原始内存校验和,将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中。
此外,为实现上述目的,本发明还提出一种基于多校验和的数据验证装置,所述装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于多校验和的数据验证程序,所述基于多校验和的数据验证程序配置为实现如上文所述的基于多校验和的数据验证方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有基于多校验和的数据验证程序,所述基于多校验和的数据验证程序被处理器执行时实现如上文所述的基于多校验和的数据验证方法的步骤。
本发明提出的基于多校验和的数据验证方法,通过获取数据读取指令,从预设类型存储单元中读取待验证数据及原始内存校验和,所述原始内存校验和由所述待验证数据生成;根据所述待验证数据生成当前内存校验和;将所述原始内存校验和与所述当前内存校验和进行比较,根据比较结果对所述待验证数据的完整性进行验证。由于在各种类型的存储单元中读取的数据均进行了数据完整性验证,能够及时发现数据是否发生错误。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的基于多校验和的数据验证装置结构示意图;
图2为本发明基于多校验和的数据验证方法第一实施例的流程示意图;
图3为本发明基于多校验和的数据验证方法第二实施例的流程示意图;
图4为本发明基于多校验和的数据验证方法第三实施例的流程示意图;
图5为本发明基于多校验和的数据验证方法第四实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的基于多校验和的数据验证装置结构示意图。
如图1所示,该基于多校验和的数据验证装置可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的装置并不构成对基于多校验和的数据验证装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及基于多校验和的数据验证程序。
在图1所示的基于多校验和的数据验证装置中,网络接口1004主要用于连接外部设备,与外部设备进行数据通信;用户接口1003主要用于连接用户终端,与用户终端进行数据通信;本发明基于多校验和的数据验证装置中的处理器1001、存储器1005可以设置在基于多校验和的数据验证装置中,所述基于多校验和的数据验证装置通过处理器1001调用存储器1005中存储的基于多校验和的数据验证程序,并执行以下操作:
获取数据读取指令,从预设类型存储单元中读取待验证数据及原始内存校验和,所述原始内存校验和由所述待验证数据生成;
根据所述待验证数据生成当前内存校验和;
将所述原始内存校验和与所述当前内存校验和进行比较,根据比较结果对所述待验证数据的完整性进行验证。
进一步地,处理器1001可以调用存储器1005中存储的基于多校验和的数据验证程序,还执行以下操作:
从所述内存中读取第一数据及第一内存校验和,并将所述第一数据作为所述待验证数据,将所述第一内存校验和作为所述原始内存校验和。
进一步地,处理器1001可以调用存储器1005中存储的基于多校验和的数据验证程序,还执行以下操作:
获取第一数据,接收第一写入指令,根据所述第一数据生成所述第一内存校验和,将所述第一数据及所述第一内存校验和写入所述内存中。
进一步地,处理器1001可以调用存储器1005中存储的基于多校验和的数据验证程序,还执行以下操作:
从所述外存中读取第二数据及第二内存校验和,并将所述第二数据作为所述待验证数据,将所述第二内存校验和作为所述原始内存校验和。
进一步地,处理器1001可以调用存储器1005中存储的基于多校验和的数据验证程序,还执行以下操作:
根据所述待验证数据生成当前外存校验和,将所述第一外存校验和与所述当前外存校验和进行比较;
当所述第一外存校验和与所述当前外存校验和一致时,认定所述待验证数据完整;
当所述第一外存校验和与所述当前外存校验和不一致时,执行所述根据所述待验证数据生成当前内存校验和的步骤。
进一步地,处理器1001可以调用存储器1005中存储的基于多校验和的数据验证程序,还执行以下操作:
获取第二数据,接收第二写入指令,根据所述第二数据生成所述第二内存校验和与所述第一外存校验和;
将所述第二数据、第二内存校验和及所述第一外存校验和写入所述外存中。
进一步地,处理器1001可以调用存储器1005中存储的基于多校验和的数据验证程序,还执行以下操作:
当验证结果为所述待验证数据完整时,将所述待验证数据及原始内存校验和写入读缓存中。
进一步地,处理器1001可以调用存储器1005中存储的基于多校验和的数据验证程序,还执行以下操作:
接收下发请求,判断所述下发请求中是否包含所述原始内存校验和;
在包含所述原始内存校验和时,从所述下发请求中提取所述待验证数据及所述原始内存校验和,并将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中;
在不包含所述原始内存校验和时,从所述下发请求中提取所述待验证数据,根据所述待验证数据生成所述原始内存校验和,将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中。
本实施例通过获取数据读取指令,从预设类型存储单元中读取待验证数据及原始内存校验和,所述原始内存校验和由所述待验证数据生成;根据所述待验证数据生成当前内存校验和;将所述原始内存校验和与所述当前内存校验和进行比较,根据比较结果对所述待验证数据的完整性进行验证。由于在各种类型的存储单元中读取的数据均进行了数据完整性验证,能够及时发现数据是否发生错误。
基于上述硬件结构,提出本发明基于多校验和的数据验证方法实施例。
参照图2,图2为本发明基于多校验和的数据验证方法第一实施例的流程示意图。
在第一实施例中,所述基于多校验和的数据验证方法包括以下步骤:
步骤S10:获取数据读取指令,从预设类型存储单元中读取待验证数据及原始内存校验和,所述原始内存校验和由所述待验证数据生成;
需要说明的是,数据完整性是指存储在数据库中的数据的所有数值均正确的状态,校验和是从数据块导出的小块基准,用于检测数据的完整性,即检测数据在其传输或存储期间是否发生错误。数据一般会在各存储***中反复进行写入、存储和读取的过程,在用户对数据进行完整性保护时,将对读取出的数据进行完整性验证,以确认数据的完整性。在对数据进行完整性验证之前,用户将从预设类型存储单元中读取出待验证数据,其中,所述预设类型存储单元包括但不限于内存、外存(磁盘、光盘等)和缓存等等。
应当理解的是,所述原始内存校验和是通过内存级校验和算法对所述待验证数据进行计算生成,其中,内存级校验和算法指的是一种高性能低存储需求低检错能力的校验和算法,比如CRC-8,Fletcher-16,CRC-16等,适用于对内存中的数据计算内存校验和,使用所述内存级校验和算法计算内存中的数据的校验和,适配性高,能满足内存数据的数据完整性保护需求和性能需求。当生成所述原始内存校验和后,将所述原始内存校验和所述待验证数据写入所述预设类型存储单元中,以供后续从所述预设类型存储单元中读取待验证数据及原始内存校验和。
当然,内存校验和也可对外存中的数据进行数据完整性验证。
步骤S20:根据所述待验证数据生成当前内存校验和;
需要说明的是,所述原始内存校验和是所述待验证数据写入所述预设类型存储单元之前生成的,为了通过内存校验和对所述待验证数据的完整性进行验证,需获取写入时和读取时的待验证数据的内存校验和,才能验证所述待验证数据在写入至读取的时间段内是否发生错误。在获取了原始内存校验和的前提下,将根据读取出的所述待验证数据生成当前内存校验和,通过对比所述原始内存校验和与所述当前内存校验和,能够验证所述待验证数据在写入至读取的时间段内是否发生了错误。
步骤S30:将所述原始内存校验和与所述当前内存校验和进行比较,根据比较结果对所述待验证数据的完整性进行验证。
应当理解的是,在生成所述当前内存校验和之后,将所述原始内存校验和与所述当前内存校验和进行比较,所述原始内存校验和与所述当前内存校验和是待验证数据在写入时和读取时的两个内存校验和,如果所述原始内存校验和与所述当前内存校验和一致,说明所述待验证数据在写入直至读取的时间段内未发生错误,数据完整性得以保持,即验证结果为所述待验证数据完整;如果所述原始内存校验和与所述当前内存校验和不一致,说明所述待验证数据在写入直至读取的时间段内发生了错误,数据完整性遭到破坏,即验证结果为所述待验证数据不完整。
本实施例通过获取数据读取指令,从预设类型存储单元中读取待验证数据及原始内存校验和,所述原始内存校验和由所述待验证数据生成;根据所述待验证数据生成当前内存校验和;将所述原始内存校验和与所述当前内存校验和进行比较,根据比较结果对所述待验证数据的完整性进行验证。由于在各种类型的存储单元中读取的数据均进行了数据完整性验证,能够及时发现数据是否发生错误。
参照图3,图3为本发明基于多校验和的数据验证方法第二实施例的流程示意图,基于上述图2所述的实施例,提出本发明基于多校验和的数据验证方法的第二实施例。
在本实施例中,所述预设类型存储单元为内存;
相应地,所述步骤S10,具体包括:
步骤S102:从所述内存中读取第一数据及第一内存校验和,并将所述第一数据作为所述待验证数据,将所述第一内存校验和作为所述原始内存校验和。
需要说明的是,所述内存包括但不限于随机存储器(random access memory,RAM)、只读存储器(Read-Only Memory,ROM)或者高速缓存(CACHE)等,数据在其整个生命周期中会经过存储***的不同层次,比如在内存、外存和缓存等等存储***中反复写入和读取,对于存储在不同存储单元中的待验证数据,将使用不同的验证方式进行验证,例如,对于外存中的数据,使用两种校验和进行验证,包括外存校验和及内存校验和,对于内存中的数据,使用一种校验和进行验证,包括内存校验和,来达到更高的验证准确度。
在本实施例中,将对内存中的数据进行数据完整性验证。
可以理解的是,对于从内存中读取的数据,将使用内存校验和进行验证,即使用待验证数据写入内存时和从内存读取时的内存校验和进行验证。在本实施例中,将内存中的数据称为第一数据,在第一数据写入内存之前,将通过所述第一数据生成第一内存校验和,在第一数据写入内存之后,读取第一数据及第一内存校验和,并将所述第一数据作为所述待验证数据,将所述第一内存校验和作为所述原始内存校验和,便于后续使用内存校验和进行验证。
进一步地,所述步骤S102之前,所述基于多校验和的数据验证方法还包括:
步骤S101:获取第一数据,接收第一写入指令,根据所述第一数据生成所述第一内存校验和,将所述第一数据及所述第一内存校验和写入所述内存中。
应当理解的是,所述第一数据是待写入内存的数据,所述第一写入指令指的是将所述第一数据写入内存中,从所述内存中读取所述第一数据之前,必然需将所述第一数据写入所述内存中。对于内存中的数据,需要通过内存校验和进行验证,因此,在将所述第一数据写入所述内存之前,将通过内存级校验和算法生成第一内存校验和,再将所述第一内存校验和及第一数据写入所述内存中。
例如,在获取第一数据d1之后,接收第一写入指令,根据内存级校验和算法生成第一内存校验和c1,将所述第一数据d1及所述第一内存校验和写入内存中。一段时间后,接收到用户输入的数据读取指令,从内存中读取第一数据d1及第一内存校验和c1,将第一数据d1作为待验证数据,将第一内存校验和c1作为原始内存校验和。根据内存级校验和算法对待验证数据d1进行计算,生成当前内存校验和c1′,将原始内存校验和c1与当前内存校验和c1′进行比较。当c1=c1′时,说明写入的第一数据与读取出的待验证数据相同,数据完整性得以保持,没有发生错误。当c1≠c1′时,说明写入的第一数据与读取出的待验证数据不相同,数据完整性遭到破坏,已发生错误。
本实施例通过在所述预设类型存储单元为内存时,获取第一数据,接收第一写入指令,根据所述第一数据生成所述第一内存校验和,将所述第一数据及所述第一内存校验和写入所述内存中;从所述内存中读取第一数据及第一内存校验和,并将所述第一数据作为所述待验证数据,将所述第一内存校验和作为所述原始内存校验和。并根据待验证数据生成当前内存校验和,通过比较原始内存校验和及当前内存校验和,验证所述待验证数据的完整性。由于对内存中的数据进行了数据完整性验证,能够及时发现数据是否发生错误。
参照图4,图4为本发明基于多校验和的数据验证方法第三实施例的流程示意图,基于上述图2所述的实施例,提出本发明基于多校验和的数据验证方法的第三实施例。
在本实施例中,所述预设类型存储单元为外存;
相应地,所述步骤S10,具体包括:
步骤S104:从所述外存中读取第二数据及第二内存校验和,并将所述第二数据作为所述待验证数据,将所述第二内存校验和作为所述原始内存校验和。
在本实施例中,将对外存中的数据进行数据完整性验证。
可以理解的是,所述外存可以是硬盘、光盘、磁带及其它外部基于多校验和的数据验证装置,对于从外存中读取的数据,可使用内存校验和进行验证,即使用待验证数据写入内存时和从内存读取时的内存校验和进行验证。在本实施例中,将外存中的数据称为第二数据,在第二数据写入内存之前,将通过所述第二数据生成第二内存校验和,在第二数据写入内存之后,读取第二数据及第二内存校验和,并将所述第二数据作为所述待验证数据,将所述第二内存校验和作为所述原始内存校验和,便于后续使用外存校验和进行验证。
进一步地,所述从所述外存中读取第二数据及第二内存校验和,具体包括:
从所述外存中读取第二数据、第二内存校验和及第一外存校验和;
可以理解的是,对于外存中读取的数据,验证效果较好的是使用内存校验和及外存校验和进行验证,则将预先获取外存中的所述第二数据、第二内存校验和及第一外存校验和,以实现通过第二内存校验和及第一外存校验和对所述第二数据进行完整性验证。
相应地,所述步骤S104之后,所述基于多校验和的数据验证方法还包括:
步骤S105:根据所述待验证数据生成当前外存校验和,将所述第一外存校验和与所述当前外存校验和进行比较;
步骤S106:当所述第一外存校验和与所述当前外存校验和一致时,认定所述待验证数据完整;
当所述第一外存校验和与所述当前外存校验和不一致时,执行所述根据所述待验证数据生成当前内存校验和的步骤。
可以理解的是,当从内存中读取所述待验证数据时,仅通过内存校验和进行校验,当从外存中读取所述待验证数据时,将通过外存校验和与内存校验和两种校验和进行数据完整性验证,其中,外存级校验和算法指的是一种低性能高存储需求高检错能力的校验和算法,比如,Adler-32,CRC-32,MD5,SHA-1等,适用于外存中的数据,使用所述外存级校验和算法计算外存中的数据的校验和,适配性高,能满足外存数据的数据完整性保护需求和性能需求。所述第一外存校验和于数据写入时通过外存级校验和算法对所述数据进行计算生成,所述当前外存校验和于数据读取时通过外存级校验和算法对所述数据进行计算生成。
可以理解的是,所述第一外存校验和与所述当前外存校验和是所述第二数据在写入外存时和从外存读取时的两个外存校验和,当所述第一外存校验和与所述当前外存校验和一致时,说明所述第二数据在写入外存至从外存读取的时间段内未发生错误,数据完整性得以保持,即验证所述待验证数据(第二数据)完整。而当所述第一外存校验和与所述当前外存校验和不一致时,存在两种情形,第一种是所述待验证数据发生错误,第二种是所述第一外存校验和在写入或存储过程中发生错误,在所述第一外存校验和与所述当前外存校验和不一致时,将执行所述根据所述待验证数据生成当前内存校验和的步骤,即通过内存校验和来验证所述待验证数据是否发生错误。若所述原始内存校验和与所述当前内存校验和一致,则可验证所述待验证数据完整。
进一步地,所述步骤S104之前,所述基于多校验和的数据验证方法还包括:
步骤S103:获取第二数据,接收第二写入指令,根据所述第二数据生成所述第二内存校验和与所述第一外存校验和;
将所述第二数据、第二内存校验和及所述第一外存校验和写入所述外存中。
可以理解的是,所述第二数据是待写入外存的数据,所述第二写入指令指的是将所述第二数据写入外存中,从所述外存中读取所述第二数据之前,必然需将所述第二数据写入所述外存中。对于外存中的数据,需要通过外存校验和验证和内存校验和进行验证,因此,在将所述第二数据写入所述外存之前,将通过内存级校验和算法生成第二内存校验和,并通过外存级校验和算法生成第一外存校验和,再将所述第二数据、所述第二内存校验和及所述第一外存校验和写入所述外存中。
例如,在获取第二数据d2之后,接收第二写入指令,根据内存级校验和算法生成第二内存校验和c2与第一外存校验和c3,将所述第二数据d2、所述第二内存校验和c2及第一外存校验和c3写入外存中。一段时间后,接收到用户输入的数据读取指令,从外存中读取所述第二数据d2、所述第二内存校验和c2及第一外存校验和c3,将第二数据d2作为待验证数据,将第二内存校验和c2作为原始内存校验和。根据外存级校验和算法对待验证数据d2进行计算,生成当前外存校验和c3′,将第一外存校验和c3与当前外存校验和c3′进行比较。当c3=c3′时,说明写入的第二数据与读取出的待验证数据相同,数据完整性得以保持,没有发生错误。当c3≠c3′时,说明写入的第二数据与读取出的待验证数据不相同,或者第一外存校验和c3在写入或存储过程中发生错误。当c3≠c3′时,根据内存级校验和算法对待验证数据d2进行计算,生成当前内存校验和c1′,将原始内存校验和c1与当前内存校验和c1′进行比较。当c1=c1′时,说明写入的第二数据与读取出的待验证数据相同,数据完整性得以保持,没有发生错误。当c1≠c1′时,说明写入的第二数据与读取出的待验证数据不相同,数据完整性遭到破坏,已发生错误。
需要说明的是,内存一般使用的是随机存取存储器,断电后数据会消失,因此,在使用完数据后会将数据写入到磁盘中进行永久保存。当验证从内存中读取出的第一数据完整时,可将所述第一数据写入外存,以使在从所述外存中读取所述第一数据时,能够使用外存校验和对所述第一数据进行验证。当从内存中读取出的第一数据验证不完整时,则说明第一数据已经发生错误,则应采取其它措施,比如数据恢复,而不能直接将其写入外存进行保存和使用。
本实施例通过在所述预设类型存储单元为外存时,获取第二数据,接收第二写入指令,根据所述第二数据生成所述第二内存校验和及第一外存校验和,将所述第二数据、所述第二内存校验和及所述第一外存校验和写入所述外存中;接收数据读取指令后,从所述内存中读取第二数据、所述第二内存校验和及所述第一外存校验和,并将所述第二数据作为所述待验证数据,将所述第二内存校验和作为所述原始内存校验和;并根据待验证数据生成当前内存校验和及当前外存校验和,通过比较第一外存校验和与当前外存校验和,比较原始内存校验和与当前内存校验和,验证所述待验证数据的完整性。由于对外中的数据同时使用了两种校验和进行了数据完整性验证,能够及时发现数据是否发生错误,能够检测外存校验和是否发生错误,降低了校验和本身出错带来错误判断的概率。
参照图5,图5为本发明基于多校验和的数据验证方法第四实施例的流程示意图,基于上述图2所述的实施例,提出本发明基于多校验和的数据验证方法的第四实施例。
在本实施例中,所述步骤S30之后,所述基于多校验和的数据验证方法还包括:
步骤S40:当验证结果为所述待验证数据完整时,将所述待验证数据及原始内存校验和写入读缓存中。
可以理解的是,当验证结果为所述待验证数据完整时,可将所述待验证数据及所述原始内存校验和存入缓存中,以便下次验证需要使用相同的该待验证数据及原始内存校验和时,不必再次从外存或者内存中读取,也不必再次计算,从而减少了计算开销,提高了速度。
进一步地,所述步骤S10之前,所述基于多校验和的数据验证方法还包括:
接收下发请求,判断所述下发请求中是否包含所述原始内存校验和;
在包含所述原始内存校验和时,从所述下发请求中提取所述待验证数据及所述原始内存校验和,并将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中;
在不包含所述原始内存校验和时,从所述下发请求中提取所述待验证数据,根据所述待验证数据生成所述原始内存校验和,将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中。
需要说明的是,由于待验证数据之前在存储***中的读写经历,可能已保存了待验证数据以及待验证数据的原始内存校验和,当未保存所述原始内存校验和时,需根据所述待验证数据生成原始内存校验和;当已保存所述原始内存校验和时,将不再对待验证数据进行校验和计算,而是直接提取下发请求中的原始内存校验和,可减少计算过程。
可以理解的是,下发请求中必定包含待验证数据,可能包含原始内存校验和,为达到减少计算过程的目的,将判断所述下发请求中是否含有原始内存校验和。在所述下发请求中包含原始内存校验和时,直接从所述下发请求中提取待验证数据及原始内存校验和,并将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中,以供后续对所述待验证数据及所述原始内存校验和进行读取和验证。在所述下发请求中不包含所述原始内存校验和时,从所述下发请求中提取所述待验证数据,根据所述待验证数据生成所述原始内存校验和,将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中,以供后续对所述待验证数据及所述原始内存校验和进行读取和验证。
本实施例通过当验证结果为所述待验证数据完整时,将所述待验证数据及原始内存校验和写入缓存中,下次数据完整性验证将不再计算所述原始内存校验和,可简化验证流程;在写入数据时,判断下发请求中是否包含所述原始内存校验和,在包含所述原始内存校验和时,无需再次计算所述原始内存校验和,减少了计算开销。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有基于多校验和的数据验证程序,所述基于多校验和的数据验证程序被处理器执行时实现如下操作:
获取数据读取指令,从预设类型存储单元中读取待验证数据及原始内存校验和,所述原始内存校验和由所述待验证数据生成;
根据所述待验证数据生成当前内存校验和;
将所述原始内存校验和与所述当前内存校验和进行比较,根据比较结果对所述待验证数据的完整性进行验证。
进一步地,所述基于多校验和的数据验证程序被处理器执行时还实现如下操作:
从所述内存中读取第一数据及第一内存校验和,并将所述第一数据作为所述待验证数据,将所述第一内存校验和作为所述原始内存校验和。
进一步地,所述基于多校验和的数据验证程序被处理器执行时还实现如下操作:
获取第一数据,接收第一写入指令,根据所述第一数据生成所述第一内存校验和,将所述第一数据及所述第一内存校验和写入所述内存中。
进一步地,所述基于多校验和的数据验证程序被处理器执行时还实现如下操作:
从所述外存中读取第二数据及第二内存校验和,并将所述第二数据作为所述待验证数据,将所述第二内存校验和作为所述原始内存校验和。
进一步地,所述基于多校验和的数据验证程序被处理器执行时还实现如下操作:
根据所述待验证数据生成当前外存校验和,将所述第一外存校验和与所述当前外存校验和进行比较;
当所述第一外存校验和与所述当前外存校验和一致时,认定所述待验证数据完整;
当所述第一外存校验和与所述当前外存校验和不一致时,执行所述根据所述待验证数据生成当前内存校验和的步骤。
进一步地,所述基于多校验和的数据验证程序被处理器执行时还实现如下操作:
获取第二数据,接收第二写入指令,根据所述第二数据生成所述第二内存校验和与所述第一外存校验和;
将所述第二数据、第二内存校验和及所述第一外存校验和写入所述外存中。
进一步地,所述基于多校验和的数据验证程序被处理器执行时还实现如下操作:
当验证结果为所述待验证数据完整时,将所述待验证数据及原始内存校验和写入读缓存中。
进一步地,所述基于多校验和的数据验证程序被处理器执行时还实现如下操作:
接收下发请求,判断所述下发请求中是否包含所述原始内存校验和;
在包含所述原始内存校验和时,从所述下发请求中提取所述待验证数据及所述原始内存校验和,并将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中;
在不包含所述原始内存校验和时,从所述下发请求中提取所述待验证数据,根据所述待验证数据生成所述原始内存校验和,将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中。
本实施例提出的基于多校验和的数据验证方法,通过获取数据读取指令,从预设类型存储单元中读取待验证数据及原始内存校验和,所述原始内存校验和由所述待验证数据生成;根据所述待验证数据生成当前内存校验和;将所述原始内存校验和与所述当前内存校验和进行比较,根据比较结果对所述待验证数据的完整性进行验证。由于在各种类型的存储单元中读取的数据均进行了数据完整性验证,能够及时发现数据是否发生错误。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
单词第一、第二等的使用不表示任何顺序,可将这些单词解释为名称。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种基于多校验和的数据验证方法,其特征在于,所述基于多校验和的数据验证方法包括以下步骤:
获取数据读取指令,从预设类型存储单元中读取待验证数据及原始内存校验和,所述原始内存校验和由所述待验证数据生成;
根据所述待验证数据生成当前内存校验和;
将所述原始内存校验和与所述当前内存校验和进行比较,根据比较结果对所述待验证数据的完整性进行验证;
所述预设类型存储单元包括外存;
相应地,所述从预设类型存储单元中读取待验证数据及原始内存校验和,具体包括:
从所述外存中读取第二数据、第二内存校验和及第一外存校验和,并将所述第二数据作为所述待验证数据,将所述第二内存校验和作为所述原始内存校验和;
根据所述待验证数据生成当前外存校验和,将所述第一外存校验和与所述当前外存校验和进行比较;
当所述第一外存校验和与所述当前外存校验和一致时,认定所述待验证数据完整;
当所述第一外存校验和与所述当前外存校验和不一致时,执行所述根据所述待验证数据生成当前内存校验和的步骤。
2.如权利要求1所述的基于多校验和的数据验证方法,其特征在于,所述预设类型存储单元为内存;
相应地,所述从预设类型存储单元中读取待验证数据及原始内存校验和,具体包括:
从所述内存中读取第一数据及第一内存校验和,并将所述第一数据作为所述待验证数据,将所述第一内存校验和作为所述原始内存校验和。
3.如权利要求2所述的基于多校验和的数据验证方法,其特征在于,所述从所述内存中读取第一数据及第一内存校验和之前,所述基于多校验和的数据验证方法还包括:
获取第一数据,接收第一写入指令,根据所述第一数据生成所述第一内存校验和,将所述第一数据及所述第一内存校验和写入所述内存中。
4.如权利要求1所述的基于多校验和的数据验证方法,其特征在于,所述从所述外存中读取第二数据、第二内存校验和及第一外存校验和之前,所述基于多校验和的数据验证方法还包括:
获取第二数据,接收第二写入指令,根据所述第二数据生成所述第二内存校验和与所述第一外存校验和;
将所述第二数据、第二内存校验和及所述第一外存校验和写入所述外存中。
5.如权利要求1-4中任一项所述的基于多校验和的数据验证方法,其特征在于,所述根据比较结果对所述待验证数据的完整性进行验证之后,所述基于多校验和的数据验证方法还包括:
当验证结果为所述待验证数据完整时,将所述待验证数据及原始内存校验和写入读缓存中。
6.如权利要求5所述的基于多校验和的数据验证方法,其特征在于,所述获取数据读取指令之前,所述基于多校验和的数据验证方法还包括:
接收下发请求,判断所述下发请求中是否包含所述原始内存校验和;
在包含所述原始内存校验和时,从所述下发请求中提取所述待验证数据及所述原始内存校验和,并将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中;
在不包含所述原始内存校验和时,从所述下发请求中提取所述待验证数据,根据所述待验证数据生成所述原始内存校验和,将所述待验证数据及所述原始内存校验和写入所述预设类型存储单元中。
7.一种基于多校验和的数据验证装置,其特征在于,所述装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于多校验和的数据验证程序,所述基于多校验和的数据验证程序配置为实现如权利要求1至6中任一项所述的基于多校验和的数据验证方法的步骤。
8.一种存储介质,其特征在于,所述存储介质上存储有基于多校验和的数据验证程序,所述基于多校验和的数据验证程序被处理器执行时实现如权利要求1至6中任一项所述的基于多校验和的数据验证方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711171385.8A CN108196975B (zh) | 2017-11-21 | 2017-11-21 | 基于多校验和的数据验证方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711171385.8A CN108196975B (zh) | 2017-11-21 | 2017-11-21 | 基于多校验和的数据验证方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108196975A CN108196975A (zh) | 2018-06-22 |
CN108196975B true CN108196975B (zh) | 2021-09-17 |
Family
ID=62573184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711171385.8A Active CN108196975B (zh) | 2017-11-21 | 2017-11-21 | 基于多校验和的数据验证方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108196975B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955916B (zh) * | 2018-09-26 | 2023-09-05 | 深信服科技股份有限公司 | 一种数据完整性保护方法、***及相关设备 |
CN109800104A (zh) * | 2018-12-18 | 2019-05-24 | 盛科网络(苏州)有限公司 | 数据存储的检测方法、装置、存储介质及电子装置 |
CN109816525A (zh) * | 2018-12-27 | 2019-05-28 | 石更箭数据科技(上海)有限公司 | 一种数据处理方法及其装置、介质、终端 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1397950A (zh) * | 2002-08-30 | 2003-02-19 | 交大铭泰(北京)软件有限公司 | 全息数据磁盘存储方法及其丢失数据的恢复方法 |
CN1758268A (zh) * | 2004-10-08 | 2006-04-12 | 富士通株式会社 | 生物特征认证方法和生物特征认证装置 |
CN101561795A (zh) * | 2009-05-20 | 2009-10-21 | 中兴通讯股份有限公司 | 一种分布式***中的数据同步方法及装置 |
CN102081577A (zh) * | 2011-01-12 | 2011-06-01 | 厦门雅迅网络股份有限公司 | Flash存储器的数据存储结构及其数据操作方式 |
CN104216791A (zh) * | 2013-05-30 | 2014-12-17 | 上海斐讯数据通信技术有限公司 | 一种校验Flash存储数据的方法 |
CN105183579A (zh) * | 2015-09-24 | 2015-12-23 | 联想(北京)有限公司 | 一种数据校验方法及装置、电子设备 |
CN105262589A (zh) * | 2014-07-16 | 2016-01-20 | 阿里巴巴集团控股有限公司 | 数据安全校验方法、装置及校验设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9501350B2 (en) * | 2014-09-22 | 2016-11-22 | Empire Technology Development Llc | Detecting unidirectional resistance drift errors in a multilevel cell of a phase change memory |
CN106484503B (zh) * | 2015-08-27 | 2019-10-18 | 深圳市中兴微电子技术有限公司 | 一种校验和的计算方法及网络处理器 |
US10108489B2 (en) * | 2015-10-28 | 2018-10-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for efficient soft data based flash memory data recovery |
CN107194250A (zh) * | 2017-03-31 | 2017-09-22 | 武汉斗鱼网络科技有限公司 | 内存代码的完整性校验方法及装置 |
CN107220141B (zh) * | 2017-05-26 | 2021-06-22 | 海信视像科技股份有限公司 | 数据文件校验方法及装置 |
-
2017
- 2017-11-21 CN CN201711171385.8A patent/CN108196975B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1397950A (zh) * | 2002-08-30 | 2003-02-19 | 交大铭泰(北京)软件有限公司 | 全息数据磁盘存储方法及其丢失数据的恢复方法 |
CN1758268A (zh) * | 2004-10-08 | 2006-04-12 | 富士通株式会社 | 生物特征认证方法和生物特征认证装置 |
CN101561795A (zh) * | 2009-05-20 | 2009-10-21 | 中兴通讯股份有限公司 | 一种分布式***中的数据同步方法及装置 |
CN102081577A (zh) * | 2011-01-12 | 2011-06-01 | 厦门雅迅网络股份有限公司 | Flash存储器的数据存储结构及其数据操作方式 |
CN104216791A (zh) * | 2013-05-30 | 2014-12-17 | 上海斐讯数据通信技术有限公司 | 一种校验Flash存储数据的方法 |
CN105262589A (zh) * | 2014-07-16 | 2016-01-20 | 阿里巴巴集团控股有限公司 | 数据安全校验方法、装置及校验设备 |
CN105183579A (zh) * | 2015-09-24 | 2015-12-23 | 联想(北京)有限公司 | 一种数据校验方法及装置、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108196975A (zh) | 2018-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110058873B (zh) | 应用页面更新方法、装置、设备和存储介质 | |
US9804933B2 (en) | System differential upgrade method, apparatus, and mobile terminal | |
CN104461641B (zh) | 一种数据烧写方法、***、烧写设备以及目标设备 | |
CN108196975B (zh) | 基于多校验和的数据验证方法、装置及存储介质 | |
CN107315616B (zh) | 一种固件的加载方法、装置及电子设备 | |
CN110442473B (zh) | 一种非易失性数据存储方法、装置、电子设备及介质 | |
CN110727597B (zh) | 一种基于日志排查无效代码补全用例的方法 | |
CN107861832B (zh) | 数据验证方法、装置及可读存储介质 | |
CN104850427B (zh) | 一种代码升级方法及装置 | |
CN106843947B (zh) | 代码缺陷的处理方法和装置 | |
CN110032505B (zh) | 软件质量确定装置和方法以及非暂态计算机可读介质 | |
CN105302924A (zh) | 一种文件管理方法及装置 | |
CN112634973A (zh) | 存储介质的数据重读方法、***、终端设备以及存储介质 | |
CN115408730A (zh) | 数据处理方法、芯片、电子设备及存储介质 | |
CN105550071A (zh) | ***文件升级及检测方法、通信设备 | |
CN111158948A (zh) | 基于去重的数据存储与校验方法、装置及存储介质 | |
CN114780019A (zh) | 电子设备的管理方法、装置、电子设备及存储介质 | |
CN108762787B (zh) | 软件修复方法、装置、计算机设备和存储介质 | |
WO2020233044A1 (zh) | 一种插件校验方法、设备、服务器及计算机可读存储介质 | |
CN106445737B (zh) | 一种多备份启动方法 | |
CN115454860A (zh) | 一种自动化测试的方法、装置、存储介质及电子设备 | |
CN106326310B (zh) | 一种手机客户端软件的资源加密更新方法 | |
CN113918384A (zh) | 数据保存方法、装置、设备及存储介质 | |
CN114564336A (zh) | 数据一致性校验方法、装置、设备以及存储介质 | |
CN108200060B (zh) | 基于web子***的单点登录验证方法、服务器及存储介质 |
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 |