CN113448764A - 校验码生成方法、装置、电子设备及计算机存储介质 - Google Patents
校验码生成方法、装置、电子设备及计算机存储介质 Download PDFInfo
- Publication number
- CN113448764A CN113448764A CN202010216411.XA CN202010216411A CN113448764A CN 113448764 A CN113448764 A CN 113448764A CN 202010216411 A CN202010216411 A CN 202010216411A CN 113448764 A CN113448764 A CN 113448764A
- Authority
- CN
- China
- Prior art keywords
- check code
- cyclic redundancy
- splicing
- preprocessing
- data
- 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.)
- Pending
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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
Abstract
本发明实施例提供了一种校验码生成方法、装置、电子设备及计算机存储介质,其中,所述校验码生成方法包括:获取待进行校验码拼接的第一部分数据的第一循环冗余校验码;从预设的预处理拼接表中,确定与所述第一循环冗余校验码对应的预测值,其中,所述预处理拼接表的长度与待进行校验码拼接的第二部分数据的第二循环冗余校验码的长度相同,所述预处理拼接表中存储有枚举循环冗余校验码获得的预测值;根据确定的所述预测值与所述第二循环冗余校验码,按照所述长度生成拼接后的循环冗余校验码。通过本发明实施例,有效利用了待拼接的第二部分数据的CRC校验码,可低成本、高效地实现CRC校验码拼接,且实现简单,降低了计算复杂度。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种校验码生成方法、装置、电子设备及计算机存储介质。
背景技术
CRC(Cyclic Redundancy Check,循环冗余校验)是一种根据网上数据包或计算机文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。
在使用CRC生成校验码以进行错误验证的场景中,存在一种情况,即,已知两部分数据,第一部分数据为N字节的非固定字节数据,第二部分数据为固定字节如4096字节数据及其对应的CRC校验码,需要计算整体N+4096字节数据的CRC校验码。在这种场景下,需要进行CRC校验码拼接。
目前,实现上述情况下两部分数据的CRC校验码拼接的一种方案为:使用第一部分数据的CRC校验码作为初始值,重新计算第二部分数据的CRC校验码。
然而,这种拼接方式没有有效利用已知的第二部分数据的CRC校验码,增加了拼接CRC校验码的计算复杂度,计算成本高,且性能较差。
发明内容
有鉴于此,本发明实施例提供一种校验码生成方案,以至少部分解决上述问题。
根据本发明实施例的第一方面,提供了一种校验码生成方法,包括:获取待进行校验码拼接的第一部分数据的第一循环冗余校验码;从预设的预处理拼接表中,确定与所述第一循环冗余校验码对应的预测值,其中,所述预处理拼接表的长度与待进行校验码拼接的第二部分数据的第二循环冗余校验码的长度相同,所述预处理拼接表中存储有枚举循环冗余校验码获得的预测值;根据确定的所述预测值与所述第二循环冗余校验码,按照所述长度生成拼接后的循环冗余校验码。
根据本发明实施例的第二方面,提供了一种校验码生成装置,包括:获取模块,用于获取待进行校验码拼接的第一部分数据的第一循环冗余校验码;确定模块,用于从预设的预处理拼接表中,确定与所述第一循环冗余校验码对应的预测值,其中,所述预处理拼接表的长度与待进行校验码拼接的第二部分数据的第二循环冗余校验码的长度相同,所述预处理拼接表中存储有枚举循环冗余校验码获得的预测值;生成模块,用于根据确定的所述预测值与所述第二循环冗余校验码,按照所述长度生成拼接后的循环冗余校验码。
根据本发明实施例的第三方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面所述的校验码生成方法对应的操作。
根据本发明实施例的第四方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的校验码生成方法。
根据本发明实施例提供的校验码生成方案,系统中预先设置有预处理拼接表,一方面,该预处理拼接表的长度与待进行校验码拼接的第二CRC校验码的长度相同,便于与第二CRC校验码进行拼接;另一方面,该预处理拼接表中存储的是枚举CRC校验码获得的预测值,也即,该预处理拼接表中的预测值可以囊括所有可能的CRC校验码。由此,不管什么样的第一CRC校验码都可以在预处理拼接表中找到对应的预测值,进而可以直接与待拼接的第二CRC校验码进行直接拼接,生成对应于第一部分数据和第二部分数据的总的CRC校验码。由此,本发明实施例提供的方案,有效利用了待拼接的第二部分数据的CRC校验码,可低成本、高效地实现CRC校验码拼接,且实现简单,降低了计算复杂度。并且,实现了不用考虑具体CRC校验码码值的第一CRC校验码和第二CRC校验码的拼接。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1A为根据本发明实施例一的一种校验码生成方法的步骤流程图;
图1B为图1A所示实施例中的一种场景示例的示意图;
图2A为根据本发明实施例二的一种校验码生成方法的步骤流程图;
图2B为图2A所示实施例中的一种预处理拼接表的分组示意图;
图3为根据本发明实施例三的一种校验码生成装置的结构框图;
图4为根据本发明实施例四的一种校验码生成装置的结构框图;
图5为根据本发明实施例五的一种电子设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
实施例一
参照图1A,示出了根据本发明实施例一的一种校验码生成方法的步骤流程图。
本实施例的校验码生成方法包括以下步骤:
步骤S102:获取待进行校验码拼接的第一部分数据的第一CRC校验码。
如前所述,本发明实施例提供的方案可适用于第一部分数据为N字节的非固定字节数据,第二部分数据为固定字节或非固定字节的数据,其中,第一部分数据对应有第一CRC校验码,第二部分数据对应有第二CRC校验码。基于此,需要通过CRC校验码拼接来计算第一部分数据和第二部分数据的整体CRC校验码。
其中,当第二部分数据为固定字节时,则无需设置多张预处理拼接表;而当第二部分数据为非固定字节时,则需根据多种不同CRC校验码的长度设置不同的多张预处理拼接表。
步骤S104:从预设的预处理拼接表中,确定与第一循环冗余校验码对应的预测值。
其中,预处理拼接表的长度与待进行校验码拼接的第二部分数据的第二CRC校验码的长度相同,预处理拼接表中存储有枚举CRC校验码获得的预测值。
将预处理拼接表的长度设置为与待进行校验码拼接的第二CRC校验码的长度相同,可以直接与第二CRC校验码进行拼接,无需再进一步进行与数据长度有关的处理,大大提升了校验码拼接速度和效率。另一方面,该预处理拼接表中的预测值通过枚举CRC校验码获得,几乎可以囊括所有可能的CRC校验码取值,因此,不管第一部分数据是什么数据,其第一CRC校验码都可在预处理拼接表中找到,也即,该预处理拼接表可适用于绝大部分的数据,具有较强的兼容性。
步骤S106:根据确定的所述预测值与第二CRC校验码,按照所述长度生成拼接后的CRC校验码。
在从预处理拼接表中确定了与第一CRC校验码对应的预测值后,即可进行校验码拼接,基于该预测值和第二部分数据的第二CRC校验码,生成拼接后的CRC校验码。因预处理拼接表的长度与第二CRC校验码的长度相同,因此,可以按照该长度生成拼接后的CRC校验码,拼接后的CRC校验码的长度与预处理拼接表的长度或者第二CRC校验码的长度相同。
上述过程的一场景示例如图1B所示,图1B中,假设需要在云服务端对接收的两部分数据进行合并存储,其中,第一部分数据具有32位的第一CRC校验码(图中示意为CRC1),该32位的第一CRC校验码被分为8组,每组4比特位。又假设预处理拼接表中的预测值也以4比特位进行存储,因预处理拼接表通过枚举CRC校验码生成,其每一组对应有24即16个预测值。基于此,根据第一CRC校验码中每组的校验码码值确定其在预处理拼接表中的预测值,图1B中分别示意为与8组CRC1对应的r1、r2……r8。将上述r1、r2……r8与第二部分数据对应的第二CRC校验码(图中示意为CRC2)进行拼接,即进行异或操作,生成与第一部分数据和第二部分数据整体对应的CRC校验码,图1B中示意为CRC_TOTAL。
通过本实施例,系统中预先设置有预处理拼接表,一方面,该预处理拼接表的长度与待进行校验码拼接的第二CRC校验码的长度相同,便于与第二CRC校验码进行拼接;另一方面,该预处理拼接表中存储的是枚举CRC校验码获得的预测值,也即,该预处理拼接表中的预测值可以囊括所有可能的CRC校验码。由此,不管什么样的第一CRC校验码都可以在预处理拼接表中找到对应的预测值,进而可以直接与待拼接的第二CRC校验码进行直接拼接,生成对应于第一部分数据和第二部分数据的总的CRC校验码。由此,本实施例提供的方案,有效利用了待拼接的第二部分数据的CRC校验码,可低成本、高效地实现CRC校验码拼接,且实现简单,降低了计算复杂度。并且,实现了不用考虑具体CRC校验码码值的第一CRC校验码和第二CRC校验码的拼接。
本实施例的校验码生成方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、PAD等)和PC机等。
实施例二
参照图2A,示出了根据本发明实施例二的一种校验码生成方法的步骤流程图。
本实施例中,以第二部分数据为具有固定长度的数据,也即,第二部分数据均具有固定长度的字节为例,对本发明实施例的校验码生成方法进行说明。但本领域技术人员应该明了,针对非定长第二部分数据情况下的校验码生成均可参照本实施例。
本实施例的校验码生成方法包括以下步骤:
步骤S202:生成预处理拼接表。
在第二部分数据为定长数据的情况下,若存储空间足够,则使用一张预处理拼接表即可。如前所述,预处理拼接表用于存储通过枚举CRC校验码获得的预测值,预处理拼接表的长度与待进行校验码拼接的第二部分数据的第二CRC校验码的长度相同。
在一种可行方式中,可以根据预处理拼接表的长度,将预处理拼接表切分为预设数量的分组;针对每个分组,根据当前分组的枚举值进行循环冗余计算,将循环冗余计算结果与当前分组对应存储;根据各个分组的循环冗余计算结果,生成预处理拼接表。由此,可以实现预处理拼接表中各个分组的预测值的快速生成。
因预处理拼接表的长度与第二CRC校验码的长度相同,因此,在实际应用中,不管是基于预处理拼接表的长度进行分组还是基于第二CRC校验码的长度进行分组均可,二者保持一致即可。需要说明的是,分组的数量与后续在表中进行第一CRC校验码的查询效率有关,因此,具体的分组数量可由本领域技术人员根据实际需求设定,分组的数量大于等于1。
例如,如图2B所示,假设预处理拼接表的长度为32比特,若将其分为8组,每组为4比特,则每组存在24即16个枚举出来的预测值,分别从二进制的0000到1111,相应地,从中确定与第一CRC校验码对应的预测值时,则可能的查询次数从1到16,当然,若使用了更高效的查询策略(如二分查找),会进一步减少查询次数。而若将其分为4组,每组为8比特,则每组存在28个预测值,相应地也会增加查询消耗;而若将其分为16组,每组2比特,虽然针对每一组的查询次数会减少,但又会占用大量的存储空间。因此,在实际应用中,本领域技术人员可以基于空间和时间平衡的原则,合理设置分组数量。
针对每个分组中的每个枚举值,对其按照第一CRC校验码和第二CRC校验码的生成算法,进行CRC计算,获得相应的计算结果(也为CRC校验码),然后将各个计算结果存储至当前分组下。
可选地,在一种可行方式中,针对每个分组,根据当前分组的枚举值进行循环冗余计算可以包括:针对当前分组,枚举当前分组的取值,并将除当前分组之外的其它分组的取值置0,获得当前分组对应的枚举值;对所述枚举值进行循环冗余计算。通过这种方式,使得其它分组的取值不会影响当前分组的预测值计算,从而能够快速生成相应的各个分组的预测值。
在进行预处理拼接表生成时,可以先根据预处理拼接表的长度len(也可认为是第二CRC校验码的长度,如为32位),分为N个组(如为8个组),每组的位数为M,N*M=len。在crc32c为示例情况下,可将32位切分为8组,每组4位。依次处理每个组,枚举每个组的所有可能取值,同时将除了这个组其他位置上的值设为0。使用这个值作为crc32c算法的初始值,例如对于第一分组的第一个枚举值如0000,则计算长度为len的全0数据的CRC校验码,存放在预处理拼接表的对应位置。根据枚举计算N个分组的所有种取值,生成预处理拼接表。
需要说明的是,以上预处理拼接表的具体生成代码仅为示例性说明,在实际应用中,本领域技术人员可以根据实际使用的语言、平台等等,并且可以进行适当的形变,以生成最终的预处理拼接表。
在预处理拼接表生成后,后续使用中,第一CRC校验码可以采用与预处理拼接表相同的分组,以进行预测值查找和确定。
步骤S204:获取待进行校验码拼接的第一部分数据的第一CRC校验码。
本领域技术人员可以采用任意适当的方式获取第一部分数据的第一CRC校验码。
步骤S206:从预设的预处理拼接表中,确定与第一CRC校验码对应的预测值。
如前所述,在预处理拼接表的分组确定后,第一CRC校验码采用相同的分组即可。
在一种可行方式中,本步骤可以实现为:获取第一CRC校验码的分组信息;从预处理拼接表中,分别确定与所述分组信息所指示的分组对应的预测值。由此,即可实现与第一CRC校验码对应的预测值的快速查找和确定。
例如,第一和第二CRC校验码均采用crc32c算法生成,同样地,预处理拼接表中的预测值也对枚举值采用crc32c算法生成。假设第一CRC校验码的第一分组的二进制比特值为1111,基于其分组信息和比特值信息,查找预处理拼接表中的r[0][15]元素(以0为起始序号时,第一分组即第0组,二进制的1111对应于十进制的15),可确定与第一CRC校验码的第一分组对应的预处理拼接表中的预测值为0x00000000(十六进制)。对于第一CRC校验码的其它分组进行类似处理,确定其在预处理拼接表中的预测值即可。
步骤S208:根据确定的所述预测值与第二CRC校验码,按照所述长度生成拼接后的CRC校验码。
例如,对所述预测值和第二CRC校验码进行异或操作,按照预处理拼接表长度或者第二CRC校验码的长度,生成拼接后的循环冗余校验码。
以第一CRC校验码为32位,分为8个分组,每个分组4比特为例,设定8个分组在预处理拼接表中对应的预测值分别为r1-r8,则,将r1-r8与第二CRC校验码进行异或操作,可实现第一CRC校验码和第二CRC校验码的拼接,拼接后的CRC校验码如CRC_TOTAL即为第一部分数据和第二部分数据的整体CRC校验码,其实现可参考上述实施例一中的图1B。
在第二数据部分为定长数据的情况下,通过上述过程,达到了快速拼接定长数据的CRC校验码的效果。如图1B中,拼接crc32c校验码只需要8次查表操作和8次异或操作,大大提高了CRC校验码的拼接速度和效率。
通过本实施例,系统中预先设置有预处理拼接表,一方面,该预处理拼接表的长度与待进行校验码拼接的第二CRC校验码的长度相同,便于与第二CRC校验码进行拼接;另一方面,该预处理拼接表中存储的是枚举CRC校验码获得的预测值,也即,该预处理拼接表中的预测值可以囊括所有可能的CRC校验码。由此,不管什么样的第一CRC校验码都可以在预处理拼接表中找到对应的预测值,进而可以直接与待拼接的第二CRC校验码进行直接拼接,生成对应于第一部分数据和第二部分数据的总的CRC校验码。由此,本实施例提供的方案,有效利用了待拼接的第二部分数据的CRC校验码,可低成本、高效地实现CRC校验码拼接,且实现简单,降低了计算复杂度。并且,实现了不用考虑具体CRC校验码码值的第一CRC校验码和第二CRC校验码的拼接。
本实施例的校验码生成方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如手机、PAD等)和PC机等。
实施例三
参照图3,示出了根据本发明实施例三的一种校验码生成装置的结构框图。
本实施例的校验码生成装置包括:获取模块302,用于获取待进行校验码拼接的第一部分数据的第一CRC校验码;确定模块304,用于从预设的预处理拼接表中,确定与第一CRC校验码对应的预测值,其中,预处理拼接表的长度与待进行校验码拼接的第二部分数据的第二CRC校验码的长度相同,预处理拼接表中存储有枚举CRC校验码获得的预测值;生成模块306,用于根据确定的所述预测值与第二CRC校验码,按照所述长度生成拼接后的CRC校验码。
本实施例的校验码生成装置用于实现前述多个方法实施例中相应的校验码生成方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的校验码生成装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
实施例四
参照图4,示出了根据本发明实施例四的一种校验码生成装置的结构框图。
本实施例的校验码生成装置包括:获取模块402,用于获取待进行校验码拼接的第一部分数据的第一CRC校验码;确定模块404,用于从预设的预处理拼接表中,确定与第一CRC校验码对应的预测值,其中,预处理拼接表的长度与待进行校验码拼接的第二部分数据的第二CRC校验码的长度相同,预处理拼接表中存储有枚举CRC校验码获得的预测值;生成模块406,用于根据确定的所述预测值与第二CRC校验码,按照所述长度生成拼接后的CRC校验码。
可选地,第二部分数据为具有固定长度的数据。
可选地,确定模块404,用于获取第一CRC校验码的分组信息;从预处理拼接表中,分别确定与所述分组信息所指示的分组对应的预测值。
可选地,生成模块406,用于对所述预测值和第二CRC校验码进行异或操作,按照所述长度生成拼接后的CRC校验码。
可选地,本实施例的校验码生成装置还包括:拼接表模块408,用于在获取模块402获取待进行校验码拼接的第一部分数据的第一CRC校验码之前,生成预处理拼接表。
可选地,拼接表模块408,用于根据预处理拼接表的长度,将预处理拼接表切分为预设数量的分组;针对每个分组,根据当前分组的枚举值进行循环冗余计算,将循环冗余计算结果与当前分组对应存储;根据各个分组的循环冗余计算结果,生成预处理拼接表。
可选地,拼接表模块408在针对每个分组,根据当前分组的枚举值进行循环冗余计算时:针对当前分组,枚举当前分组的取值,并将除当前分组之外的其它分组的取值置0,获得当前分组对应的枚举值;对所述枚举值进行循环冗余计算。
本实施例的校验码生成装置用于实现前述多个方法实施例中相应的校验码生成方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的校验码生成装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
实施例五
参照图5,示出了根据本发明实施例五的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图5所示,该电子设备可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。
其中:
处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。
通信接口504,用于与其它电子设备或服务器进行通信。
处理器502,用于执行程序510,具体可以执行上述校验码生成方法实施例中的相关步骤。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
处理器52可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
程序510具体可以用于使得处理器502执行以下操作:获取待进行校验码拼接的第一部分数据的第一CRC校验码;从预设的预处理拼接表中,确定与第一CRC校验码对应的预测值,其中,预处理拼接表的长度与待进行校验码拼接的第二部分数据的第二CRC校验码的长度相同,预处理拼接表中存储有枚举CRC校验码获得的预测值;根据确定的所述预测值与第二CRC校验码,按照所述长度生成拼接后的CRC校验码。
在一种可选的实施方式中,第二部分数据为具有固定长度的数据。
在一种可选的实施方式中,程序510还用于使得处理器502在从预设的预处理拼接表中,确定与第一CRC校验码对应的预测值时,获取第一CRC校验码的分组信息;从预处理拼接表中,分别确定与所述分组信息所指示的分组对应的预测值。
在一种可选的实施方式中,程序510还用于使得处理器502在根据确定的所述预测值与第二CRC校验码,按照所述长度生成拼接后的CRC校验码时,对所述预测值和第二CRC校验码进行异或操作,按照所述长度生成拼接后的CRC校验码。
在一种可选的实施方式中,程序510还用于使得处理器502在获取待进行校验码拼接的第一部分数据的第一CRC校验码之前,生成预处理拼接表。
在一种可选的实施方式中,程序510还用于使得处理器502在生成预处理拼接表时,根据预处理拼接表的长度,将预处理拼接表切分为预设数量的分组;针对每个分组,根据当前分组的枚举值进行循环冗余计算,将循环冗余计算结果与当前分组对应存储;根据各个分组的循环冗余计算结果,生成预处理拼接表。
在一种可选的实施方式中,程序510还用于使得处理器502在针对每个分组,根据当前分组的枚举值进行循环冗余计算时,针对当前分组,枚举当前分组的取值,并将除当前分组之外的其它分组的取值置0,获得当前分组对应的枚举值;对所述枚举值进行循环冗余计算。
程序510中各步骤的具体实现可以参见上述校验码生成方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
通过本实施例的电子设备,系统中预先设置有预处理拼接表,一方面,该预处理拼接表的长度与待进行校验码拼接的第二CRC校验码的长度相同,便于与第二CRC校验码进行拼接;另一方面,该预处理拼接表中存储的是枚举CRC校验码获得的预测值,也即,该预处理拼接表中的预测值可以囊括所有可能的CRC校验码。由此,不管什么样的第一CRC校验码都可以在预处理拼接表中找到对应的预测值,进而可以直接与待拼接的第二CRC校验码进行直接拼接,生成对应于第一部分数据和第二部分数据的总的CRC校验码。由此,本实施例提供的方案,有效利用了待拼接的第二部分数据的CRC校验码,可低成本、高效地实现CRC校验码拼接,且实现简单,降低了计算复杂度。并且,实现了不用考虑具体CRC校验码码值的第一CRC校验码和第二CRC校验码的拼接。
需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的校验码生成方法。此外,当通用计算机访问用于实现在此示出的校验码生成方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的校验码生成方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。
Claims (10)
1.一种校验码生成方法,包括:
获取待进行校验码拼接的第一部分数据的第一循环冗余校验码;
从预设的预处理拼接表中,确定与所述第一循环冗余校验码对应的预测值,其中,所述预处理拼接表的长度与待进行校验码拼接的第二部分数据的第二循环冗余校验码的长度相同,所述预处理拼接表中存储有枚举循环冗余校验码获得的预测值;
根据确定的所述预测值与所述第二循环冗余校验码,按照所述长度生成拼接后的循环冗余校验码。
2.根据权利要求1所述的方法,其中,所述第二部分数据为具有固定长度的数据。
3.根据权利要求1所述的方法,其中,所述从预设的预处理拼接表中,确定与所述第一循环冗余校验码对应的预测值,包括:
获取所述第一循环冗余校验码的分组信息;
从所述预处理拼接表中,分别确定与所述分组信息所指示的分组对应的预测值。
4.根据权利要求1所述的方法,其中,所述根据确定的所述预测值与所述第二循环冗余校验码,按照所述长度生成拼接后的循环冗余校验码,包括:
对所述预测值和所述第二循环冗余校验码进行异或操作,按照所述长度生成拼接后的循环冗余校验码。
5.根据权利要求2所述的方法,其中,在所述获取待进行校验码拼接的第一部分数据的第一循环冗余校验码之前,所述方法还包括:
生成所述预处理拼接表。
6.根据权利要求5所述的方法,其中,所述生成所述预处理拼接表,包括:
根据所述预处理拼接表的长度,将所述预处理拼接表切分为预设数量的分组;
针对每个分组,根据当前分组的枚举值进行循环冗余计算,将循环冗余计算结果与当前分组对应存储;
根据各个分组的循环冗余计算结果,生成所述预处理拼接表。
7.根据权利要求6所述的方法,其中,所述针对每个分组,根据当前分组的枚举值进行循环冗余计算,包括:
针对当前分组,枚举当前分组的取值,并将除当前分组之外的其它分组的取值置0,获得当前分组对应的枚举值;
对所述枚举值进行循环冗余计算。
8.一种校验码生成装置,包括:
获取模块,用于获取待进行校验码拼接的第一部分数据的第一循环冗余校验码;
确定模块,用于从预设的预处理拼接表中,确定与所述第一循环冗余校验码对应的预测值,其中,所述预处理拼接表的长度与待进行校验码拼接的第二部分数据的第二循环冗余校验码的长度相同,所述预处理拼接表中存储有枚举循环冗余校验码获得的预测值;
生成模块,用于根据确定的所述预测值与所述第二循环冗余校验码,按照所述长度生成拼接后的循环冗余校验码。
9.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指示,所述可执行指示使所述处理器执行如权利要求1-7中任一项所述的校验码生成方法对应的操作。
10.一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-7中任一所述的校验码生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010216411.XA CN113448764A (zh) | 2020-03-25 | 2020-03-25 | 校验码生成方法、装置、电子设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010216411.XA CN113448764A (zh) | 2020-03-25 | 2020-03-25 | 校验码生成方法、装置、电子设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113448764A true CN113448764A (zh) | 2021-09-28 |
Family
ID=77806609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010216411.XA Pending CN113448764A (zh) | 2020-03-25 | 2020-03-25 | 校验码生成方法、装置、电子设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448764A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115001623A (zh) * | 2022-05-07 | 2022-09-02 | 通号城市轨道交通技术有限公司 | 车载电子地图数据的校验方法和装置 |
CN116107800A (zh) * | 2023-04-12 | 2023-05-12 | 浙江恒业电子股份有限公司 | 一种校验码生成方法、数据恢复方法、介质、电子设备 |
-
2020
- 2020-03-25 CN CN202010216411.XA patent/CN113448764A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115001623A (zh) * | 2022-05-07 | 2022-09-02 | 通号城市轨道交通技术有限公司 | 车载电子地图数据的校验方法和装置 |
CN115001623B (zh) * | 2022-05-07 | 2024-04-19 | 通号城市轨道交通技术有限公司 | 车载电子地图数据的校验方法和装置 |
CN116107800A (zh) * | 2023-04-12 | 2023-05-12 | 浙江恒业电子股份有限公司 | 一种校验码生成方法、数据恢复方法、介质、电子设备 |
CN116107800B (zh) * | 2023-04-12 | 2023-08-15 | 浙江恒业电子股份有限公司 | 一种校验码生成方法、数据恢复方法、介质、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112540923B (zh) | 接口参数校验与转换方法、装置、设备及存储介质 | |
RU2608464C2 (ru) | Устройство, способ и сетевой сервер для обнаружения структур данных в потоке данных | |
CN104468843A (zh) | 一种文件上传方法及装置 | |
CN106681921B (zh) | 数据参数化的实现方法和装置 | |
CN113448764A (zh) | 校验码生成方法、装置、电子设备及计算机存储介质 | |
CN110661829B (zh) | 文件下载方法及装置、客户端和计算机可读存储介质 | |
CN112333186B (zh) | 数据通信方法、装置、设备及存储介质 | |
CN110647490B (zh) | 数据传输方法、装置、设备以及计算机存储介质 | |
CN106941501B (zh) | 一种数据通信方法及装置 | |
US20070022225A1 (en) | Memory DMA interface with checksum | |
CN111008230A (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN112380046B (zh) | 计算结果校验方法、系统、装置、设备及存储介质 | |
CN111478751B (zh) | 一种数据断点续传方法、装置及终端设备 | |
CN113946546A (zh) | 异常检测方法、计算机存储介质及程序产品 | |
US10123190B2 (en) | System and method for testing a CoAP server | |
CN113691546A (zh) | 一种文本文件的完整性校验方法、系统、设备和介质 | |
CN108965463B (zh) | 一种文件传输方法、装置和系统 | |
CN106326310B (zh) | 一种手机客户端软件的资源加密更新方法 | |
CN116048868A (zh) | 代码生成方法、装置、设备和存储介质 | |
CN114564336A (zh) | 数据一致性校验方法、装置、设备以及存储介质 | |
CN113626295B (zh) | 压测数据的处理方法、系统及计算机可读存储介质 | |
CN114039698A (zh) | 基于多频率的数据发送和接收方法、装置和设备 | |
CN113204683A (zh) | 信息重构方法和装置、存储介质及电子设备 | |
CN115391689B (zh) | 一种短链接生成方法、装置、设备及存储介质 | |
CN116055350B (zh) | 一种基于Json的数据通信质量检测方法 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40059935 Country of ref document: HK |