数据校验的方法和装置的制作方法

文档序号:7859563阅读:175来源:国知局
专利名称:数据校验的方法和装置的制作方法
技术领域
本发明涉及通信技术,特别涉及数据有效性的可信验证。
背景技术
数据校验是通信技术的基础之一。数据校验的方法也很多,比如异或校验,CRC校验。但这些校验方法在某些需要较高安全领域下,显得不是很适用,比如身份证的校验、商品序列码校验等标识验证。一种具有高安全性校验是采用单向散列函数对原标识运算得到信息摘要,信息摘要可以作为该标识的校验码,但这样获得的标识长度太长。比如MD5的信息摘要算法得到的信息摘要长度是512比特,用16进制表示的是32字节的内容。另一方面,ID验证中,需要将验证码符合标识的格式,而通常标识由阿拉伯数字组成,用10进制的 阿拉伯数字表示512位的信息摘要显然更长。

发明内容
本发明所要解决的问题标识校验。为解决标识校验的特殊情形,本发明解决的方案如下
一种数据校验方法,包括以下步骤
El :获得原文S ;
E2 :校验码生成步骤,对S用MD5运算得到C,再从C中选取阿拉伯数字作为S的校验码U。上述的过程中,将原文S和得到的校验码U组合后就可以得到带校验码的数据内容P。相对应的,对带校验码的数据内容进行有效性验证,可以采用相同的方法
将P拆分成原文S和校验码V ;
对原文做上述E2步骤的运算得到校验U ;
然后对校验码V和校验码U做比较,如果两者相同,则数据有效,否则数据无效。也就是,数据有效性校验时,只要在上述步骤El和E2之外增加
E3 :获得校验码V ;
E4 :校验码比较步骤,比较步骤E2得到的校验码U和校验码V,如果两者相同,则数据有效,否则无效。由于很多标识有长度限制,因而校验码也有长度限制,由此校验码生成步骤进一步包括
E21 :对S用MD5运算得到C ;
E22 :从C中选择阿拉伯数字放入队列A中;
E23 :如果队列A长度满n,则队列A中长度为n的阿拉伯数字为S的校验码U,否则转
E24 ;
E24 :合并S和C生成新的S,转E21。上述的步骤中的长度n —般为4到8。其中C是16进制表示的字符串32个字节的字符串,其中比如包括阿拉伯数字,理论上平均一个32字节长度的16进制字符串中可以包括20个阿拉伯数字。因而4 一 8个阿拉伯数字一般都可以一次性得到,但异常的情形也可能出现,所以有一个循环过程。本发明的技术效果
1、校验码生成过程可以看作是一种单向散列函数MD5的一种变形,得到的校验码可以用作一致性验证;
2、本发明生成的校验码都是阿拉伯数字,特别适用于标识的有效性验证;
3、校验码具有相当的长度,而MD5信息摘要算法是比较成熟的国际算法,因而也本发明具有一定的安全性。


·图I为本发明的模块结构示意图及应用。图2为本发明固定长度校验码生成流程图。图3为本发明添加私有数据后的固定长度校验码生成流程图。
具体实施例方式以下结合附图对本发明做详细说明。图I给出了本发明的一般应用,如图I所示,分发送方和接收方。发送方对原始数据处理生成校验码,然后将数据和校验码一同发送给接收方。接收方接收到数据和校验码后,对数据重新进行一次校验码生成,然后比较生成的校验码和接收到的校验码是否相同。假如两者的校验码不相同,接收方有理由相信数据在传递中出现了错误或者发送方是不可f目任的。发送方包括有三个模块,分别为输入模块,校验码生成模块,校验码数据组合模块。输入模块用于接收原始数据,也可能会对原始数据做进一步加工处理,例如,对原始数据进行Base64运算或者将原始数据转成阿拉伯数字。经输入模块的数据原文在校验码生成模块中生成校验码,然后将得到的校验码和数据原文组合得到用于传输的原文和校验码的组合数据包。校验码生成模块中对数据原文做MD5运算,然后在得到的信息摘要中选择数字作为校验码。接收方包括四个模块,分别为接收模块,校验码数据拆分模块,校验码生成模块,校验码比较模块。接收模块用于接收来自发送方的数据包。在实际的应用中,数据包的传递有各种方式,可能是通过网络、存储器或人。例如标识应用中,可以将上述的校验码生成方法应用于个人身份证号码的生成中,于是个人的身份证号码由两部分组成,一部分是用于标识个人身份的号码,一部分是校验码。身份证号可以手工通过键盘输入,这种情形下,上述的接收模块就是身份证号的键盘输入模块。校验码数据拆分模块,用于将数据信息和校验码分开,分开的方法可以事先按照规则定义,比如现有的18位身份证号码中,前17位为数据信息,最后I位为校验码。校验码生成模块与发送方的校验码生成模块相同。对于接收方来说,接收模块和校验码数据拆分模块构成校验码生成模块的输入模块。校验码生成模块中得到校验码和上述校验码数据拆分模块中得到的校验码最后被送入校验码比较模块中对比,接收方从而得出接收到的数据包是否有效或可信的结论。由此可以看出,添加校验过程和数据校验过程基本相同。校验码生成主要包括两个步骤信息摘要的生成;在信息摘要中选择阿拉伯数字。信息摘要可以通过单向散列函数得到。众所周知,这样的单向散列函数有MD5、SHA —I、Haval等算法。本发明中采用的是MD5算法。MD5算法得到的是512位的信息,用16进制表示,可以得到32长度16进制字符串。例如,MD5( “Hello”)=8B1A9953C4611296A827ABF8C47804D7。用16进制表示的32长度的信息摘要中一般都会包含有数字,平均而言,信息摘要包含有20个字符的阿拉伯数字,例如上述MD5( “Hello”)中得到的阿拉伯数字为“81995346112968278478047”。本发明中以这些阿拉伯数字作为数据的校验码。在很多标识应用中,标识的长度是固定的,校验码长度也是固定的,例如现有的个人身份证号码的长度为18位,校验码长度为I位。而上述信息摘要得到的阿拉伯数字的个数却是不固定的。为此可以做一个长度限制,比如8个阿拉伯数字作为校验码。MD5( “Hello”)中取前8个阿拉伯数字即得到“81995346”,“81995346”即作为“Hello”校验码,如果限制校验码长度为4位,则可以取前4个阿拉伯数字作为校验码,例如前述的·MD5( “Hello”)取“8199”作为校验码。尽管MD5信息摘要中的阿拉伯数字数量通常够,但也不排除有些例外的情形,即32长度的16进制字符串中不够8个阿拉伯数字。这种情形下,通过迭代计算以此获得足够的阿拉伯数字。如图2所示,为本发明固定长度校验码迭代计算的流程图。包括
信息摘要生成对原文S用MD5运算得到信息摘要C ;
选择数字进入队列从信息摘要C中选择阿拉伯数字放入队列A中;
判断队列长度如果队列A长度满n,则队列A中长度为n的阿拉伯数字为原文S的校验码U,否则合并原文S和信息摘要C生成新的原文,转信息摘要生成。由流程图可以看出信息摘要生成步骤中的原文S并不一定是输入装置中得到的原文,也可能是原文与信息摘要合并后得到的原文S。队列A的长度可以是固定的,也可以是非固定的。在固定最大长度的情形下,固定最大长度可以预先设置为n,则在判断队列A长度是否满n时,等同于判断队列A是否满。如果队列长度的可变的,则选择数字进入队列时,得到队列A的长度可能大于n,这时,可以选择队列A的前n个数字作为校验码。这里n表示的是校验码的固定长度,可以选择4 - 8。由上述过程,本领域技术人员可知,发送方的校验码生成过程是固定的,伪造者可以采用同样的方法构造伪造的数据和伪造数据的校验码。为此,可以在信息摘要生成之前的步骤中添加私有数据。其过程如图3所示,这段私有数据是密钥,只有发送方和接收方才能得到。这样由于MD5算法的不可抵赖性,伪造者无法伪造校验码,从而无法伪造数据。
权利要求
1.一种数据校验方法,其特征在于,包括以下步骤 El :获得原文S ; E2 :校验码生成步骤,对S用MD5运算得到C,再从C中选取阿拉伯数字作为S的校验码U。
2.如权利要求I所述的数据校验方法,其特征在于,所述的步骤E2包括 E21 :对S用MD5运算得到C ; E22 :从C中选择阿拉伯数字放入队列A中; E23 :如果队列A长度满n,则队列A中长度为η的阿拉伯数字为S的校验码U,否则转 Ε24 ; Ε24 :合并S和C生成新的S,转Ε21。
3.如权利要求2所述的数据校验方法,其特征在于,所述的长度η为4一 8。
4.如权利要求I或2或3所述的数据校验方法,其特征在于,还包括以下步骤 Ε3 :获得校验码V ; Ε4 :校验码比较步骤,比较步骤Ε2得到的校验码U和校验码V,如果两者相同,则数据有效,否则无效。
5.如权利要求I或2或3所述的数据校验方法,其特征在于,所述的步骤El还包括 在原文S后添加私有数据。
6.一种数据数据校验校验装置,其特征在于,包括 获取原文的装置; 校验码生成装置,通过对原文MD5运算得到原文的摘要,再从摘要中选取阿拉伯数字作为校验码。
7.如权利要求6所述的数据校验装置,其特征在于,所述的校验码生成装置包括 通过对数据进行MD5运算得到数据的信息摘要; 将信息摘要中的阿拉伯数字放入队列中; 用于判断队列长度是否满η,如果已经填满,则队列中的前η个阿拉伯数字作为校验码,否则进入数据合并装置; 将数据和信息摘要合并成新的数据,放入摘要生成装置中。
8.如权利要求7所述的数据校验装置,其特征在于,所述的长度η为4一 8。
9.如权利要求6或7或8所述的数据校验装置,其特征在于,还包括 获取对比校验码装置; 比较装置,根据校验码生成装置中得到的校验码与获取对比校验码装置的校验码比较,如果两者相同,则表述数据有效,否则表示数据无效。
10.如权利要求6或7或8所述的数据校验装置,其特征在于,获取原文的装置包括有私有数据添加装置。
全文摘要
本发明公开了一种数据校验的方法和装置,包括校验码生成步骤。所述的校验码生成步骤包括通过对数据进行MD5运算得到数据的信息摘要;再将信息摘要中的阿拉伯数字放入最大长度为n的队列中;最后,判断最大长度为n的队列是否已经填满,如果已经填满,则队列中的内容作为校验码,否则将数据和信息摘要合并成新的数据,再重复一遍。本发明的数据校验方法比普通的校验方法具有更高的安全性,可广泛应用于各种领域,特别适用于短消息或标识的校验。
文档编号H04L1/00GK102790660SQ20121032281
公开日2012年11月21日 申请日期2012年9月4日 优先权日2012年9月4日
发明者吴俊杰, 王伟江 申请人:南京天溯自动化控制系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1