CN106570423A - 一种数据防篡改方法及系统 - Google Patents
一种数据防篡改方法及系统 Download PDFInfo
- Publication number
- CN106570423A CN106570423A CN201610970554.3A CN201610970554A CN106570423A CN 106570423 A CN106570423 A CN 106570423A CN 201610970554 A CN201610970554 A CN 201610970554A CN 106570423 A CN106570423 A CN 106570423A
- Authority
- CN
- China
- Prior art keywords
- data message
- algorithm
- data
- pdi
- section
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种数据防篡改方法,包括步骤:发送前将原始数据信息分段后,采用预存的散列函数进行散列获得原始数据信息验证串;发送时同时发送原始数据及原始数据信息验证串;接收时同时接收发送的数据信息及原始数据信息验证串;接收后将接收的数据信息进行分段后,采用预存的散列函数进行散列获得接收的数据信息的验证串;比较接收的数据信息的验证串是否与原始数据信息的验证串一致,若是,则接收的数据信息未被篡改,否则,接收的数据信息为篡改的数据信息。本发明还提供了一种数据防篡改系统。通过本发明,大大增加了第三方篡改数据的难度,有效防止第三方借助彩虹表进行碰撞攻击,阻止用户伪造数据,保证了数据传输的安全。
Description
技术领域
本发明属于数据安全领域,特别涉及一种数据防篡改方法及系统。
背景技术
开放的网络环境上的重要数据传给别人都要防止篡改,比如:数字签名、口令验证。目前防止篡改算法都是对数据用单向散列算法(也叫摘要算法,目前普遍用摘要算法是MD5和SHA1)进行计算,之后将散列值公开发布。数据使用者在使用数据前,将数据也进行单向散列计算,将得到值(也称原数据的信息摘要)与发布者公开的散列值进行比较,以此来验证数据是否被篡改过。数据稍微不同,其散列值总是不同的,而同样的数据其信息摘要必定一致,故数据的单向散列值也叫原数据的“指纹”。
这几年由于海量存储技术发展,网络上存在巨量的关于单一摘要算法(比如:MD5、SHA1等)的彩虹表,即,根据摘要信息可以查到多个但不是所有的原始信息。
信息摘要研究,一直是信息科学里面的一个前沿,尤其在开发网络普及的今天,它的重要性越来越突出。但目前能实用的最先进的摘要系统是基于MD5和SHA1,彩虹表加上碰撞攻击,使得单一运用这两个信息摘要算法的系统失去了数据防伪的功能。
典型的场景,数据生成的信息摘要公布后,攻击者根据彩虹表查出这信息摘要的一种原数据,之后再根据攻击算法得到更多信息摘要一致的原数据。攻击着根据这大量原数据,在根据应用的背景或其他信息能甄别出真实的原数据;或挑选一个合适的原数据来伪造数据,使得数据接受者无法鉴别数据的真伪。
彩虹表加上碰撞攻击,使目前主流的信息摘要算法失去了防篡改的功能。
发明内容
本发明提供一种数据防篡改方法及系统,用以解决现有技术中存在的传输的数据信息容易被篡改的问题。
本发明提供的一种数据防篡改方法,包括步骤:
S100发送前将所述原始数据信息分段后,采用预存的散列函数进行散列获得原始数据信息验证串;
S200发送时同时发送所述原始数据及原始数据信息验证串;
S300接收时同时接收所述发送的数据信息及原始数据信息验证串;
S400接收后将所述接收的数据信息通过相同方法进行分段后,采用预存的散列函数进行散列获得接收的数据信息的验证串;
S500比较接收的数据信息的验证串是否与原始数据信息的验证串一致,若是,则接收的数据信息未被篡改,否则,所述接收的数据信息为篡改的数据信息。
将原始数据信息和接收的数据信息分段的方法有多种,可以设定一个固定的分段值,也可以设定一个与数据信息相关的变量,不管采用何种方法,原始数据信息和接收的数据信息采用的分段方法和散列函数必须是一致的。本发明一方面通过采用将原始数据信息分段后再散列的方法获得验证串,使得第三方很难去找到合适的篡改数据信息,另一方面,一旦被篡改后,接收方接收到数据信息后采用同样的分段方法及散列函数后获得接收数据信息的验证串,比对二者的验证串是否一致即可判断出是否被篡改。同时,通过分段后再散列的方法,可同时对分段后的数据信息段同时散列,大大节约验证串的生成计算时间。
进一步的,所述步骤S100包括步骤:
S110根据原始数据信息及第一预存算法将所述原始数据信息分成至少两部分信息段;所述第一预存算法含有待获取验证串的数据信息的参数;
S120分别对原始数据信息段用预存散列函数进行散列;
S130根据散列最终值生成原始数据信息验证串;
所述步骤S400还包括步骤:
S410根据接收的数据信息及第一预存算法将接收的数据信息分成至少两部分信息段;
S420分别对接收的数据信息段用预存散列函数进行散列;
S430根据散列最终值生成接收的数据信息验证串。
采用第一预存算法来确定分段数,同时,该第一预存算法是与数据信息的参数相关的,这个数据信息的参数指带获取验证串的数据信息的总长度。由此,接收的数据信息如果被篡改了的话,则在校验时,通过第一预存算法,结合数据信息,确定的分段数可能会不一样,那么分段的段数也就会不一样,从而生成的验证串长度都不会一致,结果也就很容易判断出来是否被篡改了。
进一步的,所述步骤S110还包括步骤:
S111根据原始数据信息及第一预存算法获得一个大于1的自然数,所述自然数作为原始数据信息分割成原始数据信息段的段数;所述第一预存算法含有待获取验证串的数据信息的参数;
S112根据获得的自然数,将所述原始数据信息进行分割,除最后一段原始数据信息段外,其余原始数据信息段长度相等;
所述步骤S410还包括步骤:
S411根据接收的数据信息及第一预存算法获得一个大于1的自然数,所述数值作为接收的数据信息分割成接收的数据信息段的段数;
S412根据获得的自然数,将所述接收的数据信息进行分割,除最后一段接收的数据信息段外外,其余信息段长度相等。
将数据信息分成除最后一段外,其余等长的片段,实际可实施性和操作性强。通过第一预存算法获得的自然数即组为分段的段数。同样的这里的第一预存算法与待获取验证串的数据信息的相关参数有关,比如长度,或者其中的某字符等等。此外,该第一预存算法获得的结果必须是大于1的自然数,如果分段数较多的时候,也可以采用后续的信息段用统一的数据替代,比如0000等。
进一步的,所述步骤S120还包括步骤:
S121根据原始数据信息及第二预存算法获得一个大于0自然数,所述数值作为原始数据信息段散列的次数;所述第二预存算法含有待获取验证串的数据信息的参数;
S122根据获得的散列次数,将所述原始数据信息段进行散列;
所述步骤S420还包括步骤:
S421根据接收的数据信息及第二预存算法获得一个大于0的自然数,所述数值作为接收数据信息段散列的次数;
S422根据获得的散列次数,将所述接收的数据信息段进行散列;
所述第一预存算法、所述第二预存算法为相同或不相同。
引入第二预存算法来确定数据信息段散列的次数,所述第二预存算法含有待获取验证串的数据信息的参数;这个参数包括数据信息总长度、数据信息段的字符、数据信息段对应序号等等。首先通过对数据信息进行分割,对分割片段再分别进行动态次数的散列计算,且每一个数据信息段散列的次数可以相同或不同,大大增强了篡改难度,能有效防止第三方借助彩虹表进行碰撞攻击。确定分段段数的第一预存算法和确定散列次数的第二预存算法可以是同一种算法,也可以是不同的算法。
进一步的,所述第一预存算法或第二预存算法包括步骤:
S011获取所述待获取验证串的数据信息的总长度;
S012判断所述数据信息的总长度是否是7的倍数;若是,则所述算法获得的自然数为7,否则进入步骤S013;
S013判断所述数据信息的总长度是否是6的倍数,若是,则所述算法获得的自然数为6;否则进入步骤S014;
S014判断所述数据信息的总长度是否是5的倍数,若是,则所述算法获得的自然数为5;否则进入步骤S015;
S015判断所述数据信息的总长度是否是4的倍数,若是,则所述算法获得的自然数为4;否则进入步骤S016;
S016判断所述数据信息的总长度是否是3的倍数,若是,则所述算法获得的自然数为3;否则进入步骤S017;
S017判断所述数据信息的总长度是否是2的倍数,若是,则所述算法获得的自然数为2;否则取值7为最终值。
进一步的,所述第一预存算法或第二预存算法包括步骤:
S021获取所述待获取验证串的数据信息的总长度;
S022将所述数据信息的总长度值的每一位数字相加,得到一个数值,所述数值被19整除后获得一余数,所述余数为所述算法获得的自然数。
进一步的,所述第一预存算法或第二预存算法包括步骤:
S031获取所述待获取验证串的数据信息的总长度;
S032根据校验码ISO 7064:1983.MOD 11-2计算法,获得数据信息长度数值的校验码,将所述校验码加1从而得到所述算法获得的自然数。
进一步的,所述第二预存算法包括步骤:
S041获取所述待获取验证串的数据信息分割后的所述数据信息段;
S042根据所述数据信息段最后一个字符,查找在ASCII码中的相应序号;
S043取所述数据信息段的相应序号与31的差值作为所述算法获得的自然数。
进一步的,所述第二预存算法包括步骤:
S051获取所述待获取验证串的数据信息分割后的所述数据信息段;
S052将所述数据信息段进行排序标号,获得所述数据信息段的位置序数n;
S053根据所述位置序数n获得所述数据信息段的位置权数a,所述位置权数取所述数据信息段的位置序数,即a=n;
S054获取所述数据信息段的字符数的数值,根据所述数据信息段的位置序数n,查找出所述数据信息段的字符数的数值的第n位数字,若不存在第n位的数字,则直接取最高位的数字,若取得的值为i,则将取值i与所述位置权数a的乘积作为所述算法获得的自然数。
进一步的,所述第二预存算法包括步骤:
S061获取所述数据信息段的首字符和末字符,确定所述首字符和末字符在ASCII码中的序号;
S062获取所述首字符和末字符在ASCII码中的序号的差的绝对值,将所述绝对值加1获得的数值作为所述算法获得的自然数。
上述三种第二预存算法根据数据信息段的不同而获得的算法结果可能不同,也就是说分割成的不同的数据信息段散列的次数可能是不同的。
进一步的,还包括步骤:
S125将各原始数据信息段散列后的散列值串联起来,并采用预存散列函数整体散列一次;
S425将各接收的数据信息段散列后的散列值串联起来,并采用预存散列函数整体散列一次。
通过将各信息段散列后的值再整体散列一次,使得获得的验证串长度固定,比对方便,看起来也更整齐美观。
进一步的,本发明依据的散列函数可以包括但不限于:MD5、SHA(安全散列算法)等。
本发明还提供一种数据防篡改系统,包括发送模块、接收模块、存储模块、控制模块、及判断模块,且所述发送模块、接收模块、存储模块及判断模块分别与所述控制模块相连;其中:
所述发送模块发送原始数据信息前,所述控制模块将所述原始数据信息分段后,再采用存储模块存储的散列函数进行散列获得原始数据信息的验证串;
所述发送模块同时发送所述原始数据信息及原始数据信息验证串;
所述接收模块接收所述发送模块发送的数据信息及原始数据信息验证串;
所述控制模块将所述接收的数据信息采用相同方法分段后,再采用预存的散列函数进行散列获得接收的数据信息验证串;
所述判断模块比较所述接收的数据信息的验证串是否与原始数据信息的验证串一致,若是,则判断所述接收的数据信息未被篡改,否则,判断所述接收的数据信息为篡改的数据信息。
由于对原始数据信息进行了分段处理再进行散列,相对于不分段整体散列而言,攻击者在碰撞后,每段都有可能获得一些小片段,而要从所有数据信息段碰撞的结果中组合出来,形成有意义的强碰撞则是非常难的,更别提还要找出合适的用于篡改原始数据,接收方接收到数据信息后还需进行校验,本发明提供的防篡改系统是一种更安全的校验系统,以解决现有采用单一摘要算法导致数据安全性校验结果不准确的问题。作为接收方,接收模块接收到发送方的数据信息后,为了验证接收的数据信息是否被篡改了,那么,需要采用同样的方法进行分段和散列,通过比较接收数据信息的验证串是否和接收的原始数据信息的验证串一致来进行验证接收的数据信息是否被篡改。
进一步的,所述控制模块还包括分段单元、散列单元和生成单元,且所述分段单元和所述生成单元分别与所述散列单元相连,其中:
所述控制模块将所述原始数据信息分段后,再采用存储模块存储的散列函数进行散列获得原始数据信息的验证串包括:
所述控制模块的分段单元根据原始数据信息及所述存储模块存储的第一预存算法,将所述原始数据信息分成至少两部分信息段;所述第一预存算法含有待获取验证串的数据信息的参数;
所述控制模块的散列单元分别对所述原始数据信息段用所述存储模块存储的散列函数进行散列;
所述控制模块的生成单元根据所述控制单元散列的最终值生成原始数据信息验证串;
所述控制模块将所述接收的数据信息分段后,再采用存储模块存储的散列函数进行散列获得接收的数据信息验证串包括:
所述控制模块的分段单元根据所述接收模块接收的数据信息及所述存储模块存储的第一预存算法,将所述接收的数据信息分成至少两部分信息段;
所述控制模块的散列单元分别对所述接收的数据信息段用所述存储模块存储的散列函数进行散列;
所述控制模块的生成单元根据所述控制单元散列的最终值生成接收的数据信息验证串。
引入第一预存算法动态确定分割段数,增强防篡改功能。
进一步的,所述控制模块还包括算法单元,且所述算法单元与所述分段单元相连;其中:
所述控制模块的分段单元根据所述存储模块存储的第一预存算法,将所述原始数据信息分成至少两部分信息段包括:
所述算法单元根据所述存储模块存储的第一预存算法获得一个大于1的自然数,所述数值作为原始数据信息分割成原始数据信息段的段数;
所述分段单元根据所述算法单元获得的自然数,将所述原始数据信息进行分割,除最后一段原始数据信息段外,其余原始数据信息段长度相等;
所述控制模块的分段单元根据所述存储模块存储的第一预存算法,将所述接收的数据信息分成至少两部分信息段包括:
所述算法单元根据所述存储模块存储的第一预存算法获得一个大于1的自然数,所述数值作为接收的数据信息分割成接收的数据信息段的段数;
所述分段单元根据所述算法单元获得的自然数,将所述接收的数据信息进行分割,除最后一段接收的数据信息段外,其余接收的数据信息段长度相等。
通过第一预存算法及数据信息确定数据信息分割的段数,分割成数据信息段后再散列,第三方通过碰撞每个数据信息段后得到很多数据值,很难去组合分析,找出合适的篡改数据。
进一步的,所述控制模块的所述算法单元还与所述散列单元相连,其中:
所述控制模块的散列单元分别对所述原始数据信息段用所述存储模块存储的散列函数进行散列包括:
所述算法单元根据所述存储模块存储的第二预存算法获得一个大于0的自然数,所述数值作为原始数据信息段散列的次数;所述第二预存算法含有待获取验证串的数据信息的参数;
所述散列单元根据获得的散列次数,将所述原始数据信息段进行散列;
所述控制模块的散列单元分别对所述接收的数据信息段用所述存储模块存储的散列函数进行散列包括:
所述算法单元根据所述存储单元存储的第二预存算法获得一个大于0的自然数,所述数值作为接收数据信息段散列的次数;
所述散列单元根据获得的散列次数,将所述控制模块的接收模块接收的数据信息段进行散列;
所述第一预存算法、所述第二预存算法为相同或不相同。
通过第二预存算法确定数据信息段散列的次数,动态的散列次数,增强了数据信息防篡改功能。数据信息如果被篡改了,那么根据包含数据信息的相关参数的预存算法计算出来的结果也很可能不一样,而且分割的段数和数据信息段散列的次数都会随数据信息的改变而改变,而一旦数据改变、段数改变、散列次数改变,则获得的最终验证串也肯定不一样。
进一步的,所述存储模块存储的所述第一预存算法或所述第二预存算法包括:
获取所述待获取验证串的数据信息的总长度;
判断所述数据信息的总长度是否是7的倍数;若是,则所述算法获得的自然数为7;
否则,判断所述数据信息的总长度是否是6的倍数,若是,则所述算法获得的自然数为6;
否则,判断所述数据信息的总长度是否是5的倍数,若是,则所述算法获得的自然数为5;
否则,判断所述数据信息的总长度是否是4的倍数,若是,则所述算法获得的自然数为4;
否则,判断所述数据信息的总长度是否是3的倍数,若是,则所述算法获得的自然数为3;
否则,判断所述数据信息的总长度是否是2的倍数,若是,则所述算法获得的自然数为2;否则所述算法获得的自然数为7。
进一步的,所述存储模块存储的所述第一预存算法或所述第二预存算法包括:
获取所述待获取验证串的数据信息的总长度值;
将所述数据信息总长度值的每一位数字相加,得到一个数值,所述数值被19整除后获得一余数,所述余数为所述算法获得的自然数。
进一步的,所述存储模块存储的第一预存算法或第二预存算法包括:
获取所述待获取验证串的数据信息的总长度值;
根据校验码ISO 7064:1983.MOD 11-2计算法,获得数据信息总长度数值的校验码,将所述校验码加1从而得到所述算法获得的自然数。
上述三种第一预存算法或第二预存算法,根据数据信息的总长度而确定。
进一步的,所述存储模块存储的第二预存算法包括:
获取所述待获取验证串的数据信息分割后的所述数据信息段;
根据所述数据信息段最后一个字符,查找在ASCII码中的相应序号;
取所述数据信息段的相应序号与31的差值作为所述算法获得的自然数。
进一步的,所述存储模块存储的第二预存算法包括:
获取所述待获取验证串的数据信息分割后的所述数据信息段;
将所述数据信息段进行排序标号,获得所述数据信息段的位置序数n;
根据所述位置序数n获得所述数据信息段的位置权数a,所述位置权数取所述数据信息段的位置序数,即a=n;
获取所述数据信息段的字符的数值,根据所述数据信息段的位置序的自然数n,查找出所述数据信息段的字符的自然数的第n位数字,若不存在第n位的数字,则直接取最高位的数字,若最后取得的值为i,则将取值i与所述位置权数a的乘积作为所述算法获得的自然数。
进一步的,所述存储模块存储的第二预存算法包括:
获取所述待获取验证串的数据信息分割后的所述数据信息段;
获取所述数据信息段的首字符和末字符,确定所述首字符和末字符在ASCII码中的序号;
获取所述首字符和末字符在ASCII码中的序号的差的绝对值,将所述绝对值加1获得的数值作为所述算法获得的自然数。
上述三种第二预存算法,通过数据信息段的相关参数来确定每个数据信息段散列的次数,每个数据信息段散列次数可能不一样,增加了篡改难度。
进一步的,所述散列单元根据获得的散列次数,将所述原始数据信息段进行散列之后还包括:
所述散列单元将各原始数据信息段散列后的散列值串联起来,并采用预存散列函数整体散列一次;
所述散列单元根据获得的散列次数,将所述控制模块的接收模块接收的数据信息段进行散列之后还包括:
所述散列单元将各接收的数据信息段散列后的散列值串联起来,并采用所述存储模块存储的散列函数整体散列一次。
分段散列后再整体散列一次,使得最终的验证串长度固定。
本发明有益效果如下:
本发明对需要验证的信息进行分割,对分割片段分别进行动态次数的散列计算,能有效防止第三方借助彩虹表进行碰撞攻击,阻止用户伪造数据。通过同样的分段及散列方法后比对原始数据信息及接收的数据信息的验证串,判断原始数据信息是否被篡改,校验结果准确,第三方篡改或伪造数据难度高,容易被验证出来。此外,通过对数据信息分割片段,之后可能同时对这多个片段进行散列,减少生成最终验证串的计算时间。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种数据防篡改方法实施例一流程图;
图2为本发明一种数据防篡改方法实施例二流程图;
图3为本发明一种数据防篡改方法另一实施例流程图;
图4为本发明一种数据防篡改方法另一实施例流程图;
图5为本发明一种数据防篡改方法另一实施例流程图;
图6为一种第一预存算法实施例流程图;
图7为一种第二预存算法实施例流程图;
图8为一种第二预存算法实施例流程图;
图9为本发明一种数据防篡改系统实施例一框图;
图10为本发明一种数据防篡改系统另一实施例框图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明提供的一种数据防篡改方法,实施例1如图1所示,包括步骤:
S100发送前将所述原始数据信息分段后,采用预存的散列函数进行散列获得原始数据信息验证串;
S200发送时同时发送所述原始数据及原始数据信息验证串;
S300接收时同时接收所述发送的数据信息及原始数据信息验证串;
S400接收后将所述接收的数据信息通过相同方法进行分段后,采用预存的散列函数进行散列获得接收的数据信息的验证串;
S500比较接收的数据信息的验证串是否与原始数据信息的验证串一致,若是,则接收的数据信息未被篡改,否则,所述接收的数据信息为篡改的数据信息。
发布方发布数据之前,先要对该数据分段、散列获得数据信息验证串,然后将原始数据信息及其验证串一同发布,以便接收方接收数据后采用与原始数据信息相同的分段方法和散列函数生成接收数据的验证串,从而将接收数据的验证串与原始数据的验证串进行对比验证。本实施例与现有技术不同之处在于,散列之前先对原始数据进行了分段,然后再进行散列,各片段散列后将散列结果组合起来(依次串联起来或者按预设规则组合均可,但原始数据与接收数据需采用同样的方式即可)。分段的方法有多种,可以设定一个固定的分段值,也可以设定一个与数据信息相关的变量,不管采用何种方法,原始数据信息和接收的数据信息采用的分段方法和散列函数必须是一致的。原始数据信息被分段后再散列,攻击者即使对每一个信息段碰撞出很多可能的值,但由于原始数据被分割成了N多信息段,则面对无数可能的组合情况下,第三方攻击者很难组合分析,更别说找出合适的用于篡改的原始数据。判断接收的数据信息是否被攻击者篡改了,只需接收方接收到数据信息后,会采用同样的方法进行分段和散列,通过比对原始数据信息与接收数据信息的验证串来进行判断。此外,对数据信息分割片段,之后可同时对这多个片段进行散列,减少生成最终验证串的计算时间。
本发明一种数据防篡改方法的第二实施例,如图2所示,包括步骤:
S110根据原始数据信息及第一预存算法将所述原始数据信息分成至少两部分信息段;所述第一预存算法含有待获取验证串的数据信息的参数;
S120分别对原始数据信息段用预存散列函数进行散列;
S130根据散列最终值生成原始数据信息验证串;
S200发送时同时发送原始数据及原始数据信息验证串;
S300接收时同时接收所述的数据信息及原始数据信息验证串;
S410根据接收的数据信息及第一预存算法将接收的数据信息分成至少两部分信息段;
S420分别对接收的数据信息段用预存散列函数进行散列;
S430根据散列最终值生成接收的数据信息验证串;
S500比较接收的数据信息的验证串是否与原始数据信息的验证串一致,若是,则接收的数据信息未被篡改,否则,所述接收的数据信息为篡改的数据信息。
本实施例在上述第一实施例的基础上,具体阐述了一种数据信息验证串的生成步骤,利用数据信息及第一预存的算法将数据信息进行分段,这里的第一预存算法包含待获取验证串的数据信息的参数,比如我们可选用数据信息的总长度,再结合第一预存的算法,确定分段的段数。加入了数据信息的某个参数后,第一预存算法生成的值则与该数据信息相关的,不同的数据信息根据同样的预存算法可以生成不同的数值,从而也可以将该数据信息分成不同的段数。
本方法的另一实施例,如图3所示,本实施例在上述第二实施例基础上将所述步骤S110和步骤S410进行进一步限定,具体的步骤如下:
S111根据原始数据信息及第一预存算法获得一个大于1的自然数,所述自然数作为原始数据信息分割成原始数据信息段的段数;所述第一预存算法含有待获取验证串的数据信息的参数;
S112根据获得的自然数,将所述原始数据信息进行分割,除最后一段原始数据信息段外,其余原始数据信息段长度相等;
S120分别对原始数据信息段用预存散列函数进行散列;
S130根据散列最终值生成原始数据信息验证串;
S200发送时同时发送原始数据及原始数据信息验证串;
S300接收时同时接收所述的数据信息及原始数据信息验证串;
S411根据接收的数据信息及第一预存算法获得一个大于1的自然数,所述数值作为接收的数据信息分割成接收的数据信息段的段数;
S412根据获得的自然数,将所述接收的数据信息进行分割,除最后一段接收的数据信息段外外,其余信息段长度相等;
S420分别对接收的数据信息段用预存散列函数进行散列;
S430根据散列最终值生成接收的数据信息验证串;
S500比较接收的数据信息的验证串是否与原始数据信息的验证串一致,若是,则接收的数据信息未被篡改,否则,所述接收的数据信息为篡改的数据信息。
根据数据信息及第一预存算法,实现了动态分割,增加了篡改难度。根据数据信息及第一预存算法获取一个大于1的自然数N,该自然数则作为数据信息分割的段数,从而将数据信息分割成N段,其中,前面的N-1段等长,最后的一段可不等长。当然,也可限定首段不等长,其余等长,或者第二段不等长,其余等长等。
本方法的另一实施例,如图4所示,包括步骤:
S110根据原始数据信息及第一预存算法将所述原始数据信息分成至少两部分信息段;所述第一预存算法含有待获取验证串的数据信息的参数;
S121根据原始数据信息及第二预存算法获得一个大于0自然数,所述数值作为原始数据信息段散列的次数;所述第二预存算法含有待获取验证串的数据信息的参数;
S122根据获得的散列次数,将所述原始数据信息段进行散列;
S130根据散列最终值生成原始数据信息验证串;
S200发送时同时发送原始数据及原始数据信息验证串;
S300接收时同时接收所述的数据信息及原始数据信息验证串;
S410根据接收的数据信息及第一预存算法将接收的数据信息分成至少两部分信息段;
S421根据接收的数据信息及第二预存算法获得一个大于0的自然数,所述数值作为接收数据信息段散列的次数;
S422根据获得的散列次数,将所述接收的数据信息段进行散列;
S430根据散列最终值生成接收的数据信息验证串;
S500比较接收的数据信息的验证串是否与原始数据信息的验证串一致,若是,则接收的数据信息未被篡改,否则,所述接收的数据信息为篡改的数据信息。
所述第一预存算法、所述第二预存算法为相同或不相同。
根据数据信息及预存的第二预存算法,实现了动态次数的散列。对分割片段分别进行动态次数的散列计算,能有效防止第三方借助彩虹表进行碰撞攻击,因为第三方攻击者读取发布验证串后,即使知道如何将最终验证串分开,但不知道动态散列了多少次,也就很难通过彩虹表查询出可能的原始的片段。如果第三方攻击者试图穷举所有可能的散列次数,或者即使得到了散列次数,但通过彩虹表每逆散列一次得到的只是可能的一个值,还需要根据这个可能的值通过碰撞算法计算出多个其他可能的值,之后需要将这若干个可能的值再分别逆散列,这计算过程会成指数级别增长,最终可能的结果数量也非常巨大,且这最终结果只是可能的片断,在巨量可能的组合情况下,第三方攻击者无法组合分析。更没有办法找出合适的用于篡改的原始数据,因为伪造出数据需要根据自身数据动态决定散列次数,这样计算出最终验证串与真实发布的最终验证串一定不一致。
本方法的另一实施例,采用分割段数和散列次数均根据数据信息及相应的算法动态确定。具体的,如图5所示,包括步骤:
S111根据原始数据信息及第一预存算法获得一个大于1的自然数,所述自然数作为原始数据信息分割成原始数据信息段的段数;所述第一预存算法含有待获取验证串的数据信息的参数;
S112根据获得的自然数,将所述原始数据信息进行分割,除最后一段原始数据信息段外,其余原始数据信息段长度相等;
S121根据原始数据信息及第二预存算法获得一个大于0自然数,所述数值作为原始数据信息段散列的次数;所述第二预存算法含有待获取验证串的数据信息的参数;
S122根据获得的散列次数,将所述原始数据信息段进行散列;
S130根据散列最终值生成原始数据信息验证串;
S200发送时同时发送原始数据及原始数据信息验证串;
S300接收时同时接收所述的数据信息及原始数据信息验证串;
S411根据接收的数据信息及第一预存算法获得一个大于1的自然数,所述数值作为接收的数据信息分割成接收的数据信息段的段数;
S412根据获得的自然数,将所述接收的数据信息进行分割,除最后一段接收的数据信息段外外,其余信息段长度相等。
S421根据接收的数据信息及第二预存算法获得一个大于0的自然数,所述数值作为接收数据信息段散列的次数;
S422根据获得的散列次数,将所述接收的数据信息段进行散列;
S430根据散列最终值生成接收的数据信息验证串;
S500比较接收的数据信息的验证串是否与原始数据信息的验证串一致,若是,则接收的数据信息未被篡改,否则,所述接收的数据信息为篡改的数据信息。
本实施例中所述第一预存算法、所述第二预存算法为相同或不相同。
上述实施例中的第一预存算法或第二预存算法可以选用现有技术中的多种算法或者自行设定的算法,两种预存算法均与待获取验证串的数据信息的参数相关,算法的选用,使得数据信息的分割和散列均动态确定,增强了数据的安全性。本发明中举例的算法实施例各有其特点及优点,同时,本发明包括但不限于以下算法。
具体的,如图6所示,第一预存算法或第二预存算法实施例包括步骤:
S011获取所述待获取验证串的数据信息的总长度;
S012判断所述数据信息的总长度是否是7的倍数;若是,则所述算法获得的自然数为7,否则进入步骤S013;
S013判断所述数据信息的总长度是否是6的倍数,若是,则所述算法获得的自然数为6;否则进入步骤S014;
S014判断所述数据信息的总长度是否是5的倍数,若是,则所述算法获得的自然数为5;否则进入步骤S015;
S015判断所述数据信息的总长度是否是4的倍数,若是,则所述算法获得的自然数为4;否则进入步骤S016;
S016判断所述数据信息的总长度是否是3的倍数,若是,则所述算法获得的自然数为3;否则进入步骤S017;
S017判断所述数据信息的总长度是否是2的倍数,若是,则所述算法获得的自然数为2;否则取值7为最终值。
本算法中的判断数据信息长度是否是2-7的倍数的判断顺序变换则可得到另一算法,本发明不再一一赘述。根据本算法中,数据信息最多可分割成7端、或者最多可散列7次,且关于从7往下依次判断的判断顺序优于其它顺序,大大增加了攻击者篡改的难度。
具体的,另一种第一预存算法或第二预存算法包括步骤:
S021获取所述待获取验证串的数据信息的总长度;
S022将所述数据信息的总长度值的每一位数字相加,得到一个数值,所述数值被19整除后获得一余数,所述余数为所述算法获得的自然数。
本算法中选用的19整除,当然我们也可选用其它的数值,在此不再赘述。
具体的,另一种第一预存算法或第二预存算法包括步骤:
S031获取所述待获取验证串的数据信息的总长度;
S032根据校验码ISO 7064:1983.MOD 11-2计算法,获得数据信息长度数值的校验码,将所述校验码加1从而得到所述算法获得的自然数。
本算法中,采用将校验码加1得到的自然数,同样,我们也可以设定为校验码加2、加3等等将检验码变形的其它方式,只需结果为大于1的整数即可。
具体的,如图7所示,另一种第一预存算法或第二预存算法包括步骤:
S041获取所述待获取验证串的数据信息分割后的所述数据信息段;
S042根据所述数据信息段最后一个字符,查找在ASCII码中的相应序号;
S043取所述数据信息段的相应序号与31的差值作为所述算法获得的自然数。
本算法中选用的数据信息段的序号与31的差值作为算法获得的自然数,同样的,我们也可以选用其它方法,将序号进行运算,只需获得的结果为大于1的整数即可,当然,一般散列的次数或者分段的段数也不能一味追求过大。
数据信息段散列的次数除了以上算法获得外,还可选用下面的算法或其它算法获得,下面的第二预存算法根据不同的数据信息段获得的自然数不同,因而,不同的数据信息段散列的次数也会不同,更加大大的增加了攻击者篡改数据的难度。具体的,如图8所示,第二预存算法包括步骤:
S051获取所述待获取验证串的数据信息分割后的所述数据信息段;
S052将所述数据信息段进行排序标号,获得所述数据信息段的位置序数n;
S053根据所述位置序数n获得所述数据信息段的位置权数a,所述位置权数取所述数据信息段的位置序数,即a=n;
S054获取所述数据信息段的字符数的数值,根据所述数据信息段的位置序数n,查找出所述数据信息段的字符数的数值的第n位数字,若不存在第n位的数字,则直接取最高位的数字,若最后取得的值为i,则将取值i与所述位置权数a的乘积作为所述算法获得的自然数。
本算法中位置权数等于位置序数,当然,我们也可以将此算法进行变形得到其它算法,比如a=n+1;或a=n+2;或者a=n*2等等,即a的取值与n相关。
具体的,第二预存算法包括步骤:
S061获取所述数据信息段的首字符和末字符,确定所述首字符和末字符在ASCII码中的序号;
S062获取所述首字符和末字符在ASCII码中的序号的差的绝对值,将所述绝对值加1获得的数值作为所述算法获得的自然数。
由本算法可变形出很多其它算法,例如,取首字符和末字符在ASCII码中的序号的差的绝对值作为算法获得的自然数,若绝对值等于0,则选定一个数值作为算法获得的自然数。其它多种变形算法,在此不再赘述。
在上述实施例的基础上,均可在分割后的额数据信息段散列之后再增加一个整体散列的步骤:
S125将各原始数据信息段散列后的散列值串联起来,并采用预存散列函数整体散列一次;
S425将各接收的数据信息段散列后的散列值串联起来,并采用预存散列函数整体散列一次。
将分割后的数据信息各自分别散列之后,再将所有数据信息段的散列值再整体散列一次的话,可将最终获得的数据信息的验证串的长度固定,不会出现因分割段数过多而使得数据信息的验证串过长。
本方法的另一实施例如下:
步骤一:先计算信息的总长度。
步骤二:需要将整个信息分成N份,前N-1份是等长,最后剩余一份不要求等长。N必须是自然数(大于1),具体得到N值的算法如下:
1.判断原数据长度的数值的个位数是否是0、2、4、6、8。如果是,则N取2。
2.计算总长度的数值之和是否是3的倍数。如果是,则N取3。
3.判断总长度的数值的最后两位能否被4整除。如果是,则N取4。
4.判断判断总长度的数值的个位数是否是0、5。如果是,则N取5。
5.如果总长度既能被2整除,也能被3整除。则N取6
6.如果这总长度的数值的个位数字截去,再从余下的数中,减去个位数的2倍,得到一个差值,如果这差值小于等于77,看是否是7的倍数。如果差值大于77,就需要继续上述“截尾、倍大、相减、验差”的过程,直到能清楚判断为止(例如,判断133是否7的倍数的过程如下:13-3×2=7,所以133是7的倍数;又例如判断6139是否7的倍数的过程如下:613-9×2=595,59-5×2=49,所以6139是7的倍数)。如果能,则N取7。
7.如果根据总长度能被2、3、4、5、6、7中的多个整除,则取最大的数值,作为分割值。
8.如果根据总长度不能被2、3、4、5、6、7中任何一个整除,则N取7。
步骤三:分割后的信息片段,根据每个片段最后一个字符确定这个片段需要散列的次数M。注意,各片段散列次数不一定相同,M的值取值方法:根据每个片段的最后一个字符在ASCII码中的序号减去31来确定。比如数字0在ASCII码中序数是48,那么M取17(即48-31),字母A在ASCII码中序数是65,那么M取34(65-31)。
步骤四:分别对这N份片段用某个散列函数进行信息摘要,将得到的N个信息摘要结果用相同的散列函数再进行信息摘要,一共重复M次。
步骤五:将步骤四得到N个最终信息摘要依照原信息次序依次串联起来。最终的数据就是验证串。
步骤六:信息接受者在得到信息后,用本系统按照上述步骤一到步骤五生成自己的验证串。
步骤七:比对信息发布者发布的验证串和自己生成的验证串是否一致,如果一致,说明数据没有被篡改过。如果不一致,数据一定被篡改过。
由上述实施步骤可见,本发明对需要验证的信息进行分割,对分割片段分别进行动态次数的散列计算,能有效防止第三方借助彩虹表进行碰撞攻击,因为第三方攻击者读取发布验证串后,即使知道如何将最终验证串分开,但不知道动态散列了多少次,就无法通过彩虹表查询出可能的原始的片段。
如果第三方攻击者试图穷举所有可能的散列次数(一共六种散列次数),但通过彩虹表每逆散列一次得到的只是可能的一个值,还需要根据这个可能的值通过碰撞算法计算出多个其他可能的值,之后需要将这若干个可能的值再分别逆散列,这计算过程会成指数级别增长,最终可能的结果数量也非常巨大,且这最终结果只是可能的片断,在巨量可能的组合情况下,第三方攻击者无法组合分析。更没有办法找出合适的用于篡改的原始数据,因为伪造出数据需要根据自身数据动态决定散列次数,这样计算出最终验证串与真实发布的最终验证串一定不一致。
较佳的,上述所有实施例中的散列函数可以包括但不限于:MD5、SHA1(安全散列算法)等。本发明的关键不在于也不依赖于单一的算法的选取。
基于相同的技术构思,本发明实施例还提供一种数据防篡改系统,本发明系统的实施例一如图9所示。
本发明提供的数据防篡改系统,包括发送模块10、接收模块20、存储模块40、控制模块30、及判断模块50,且发送模块10、接收模块20、存储模块40及判断模块50分别与控制模块30相连;其中:
发送模块10发送原始数据信息前,控制模块30将原始数据信息分段后,再采用存储模块40存储的散列函数进行散列获得原始数据信息的验证串;
发送模块10同时发送原始数据信息及原始数据信息验证串;
接收模块20接收发送模块10发送的数据信息及原始数据信息验证串;
控制模块30将接收的数据信息通过相同方法分段后,再采用预存的散列函数进行散列获得接收的数据信息验证串;
判断模块50比较接收的数据信息的验证串是否与原始数据信息的验证串一致,若是,则判断接收的数据信息未被篡改,否则,判断接收的数据信息为篡改的数据信息。
作为发送方,发送模块10发送原始数据信息之前,先要通过控制模块30获取原始数据的信息验证串,控制模块30先将原始数据信息分段后,再用预存的散列函数进行散列,从而获得原始数据信息验证串。由于对原始数据信息进行了分段处理再进行散列,相对于不分段整体散列而言,攻击者在碰撞后,每段都有可能获得一些小片段,而要从所有数据信息段碰撞的结果中组合出来,形成有意义的强碰撞则是非常难的,更别提还要找出合适的用于篡改原始数据,一旦攻击者篡改了原始数据,接收方接收到数据信息后还需进行校验,本发明提供了更安全校验系统,以解决现有采用单一摘要算法导致数据安全性校验结果不准确的问题。作为接收方,接收模块20接收到发送方的数据信息后,为了验证接收的数据信息是否被篡改了,那么,需要采用同样的方法进行分段和散列,通过比较接收数据信息的验证串是否和接收的原始数据信息的验证串一致来进行验证接收的数据信息是否被篡改。
本系统的另一个实施例,如图10所示,在上述实例的基础上,控制模块30还包括分段单元31、散列单元32和生成单元33,且分段单元31和生成单元33分别与散列单元32相连,其中:
控制模块30将原始数据信息分段后,再采用存储模块40存储的散列函数进行散列获得原始数据信息的验证串包括:
控制模块30的分段单元31根据原始数据信息及存储模块40存储的第一预存算法,将原始数据信息分成至少两部分信息段;第一预存算法含有待获取验证串的数据信息的参数;
控制模块30的散列单元32分别对原始数据信息段用存储模块40存储的散列函数进行散列;
控制模块30的生成单元33根据控制单元散列的最终值生成原始数据信息验证串;
控制模块30将接收的数据信息分段后,再采用存储模块40存储的散列函数进行散列获得接收的数据信息验证串包括:
控制模块30的分段单元31根据接收模块20接收的数据信息及存储模块40存储的第一预存算法,将接收的数据信息分成至少两部分信息段;
控制模块30的散列单元32分别对接收的数据信息段用存储模块40存储的散列函数进行散列;
控制模块30的生成单元33根据控制单元散列的最终值生成接收的数据信息验证串。
较佳的,本系统通过采用第一预存算法获取的自然数,作为数据信息分割的段数,具体的,控制模块30还包括算法单元34,且算法单元34与分段单元31相连;其中:
控制模块30的分段单元31根据存储模块40存储的第一预存算法,将原始数据信息分成至少两部分信息段包括:
算法单元34根据存储模块40存储的第一预存算法获得一个大于1的自然数,数值作为原始数据信息分割成原始数据信息段的段数;
分段单元31根据算法单元34获得的自然数,将原始数据信息进行分割,除最后一段原始数据信息段外,其余原始数据信息段长度相等;
控制模块30的分段单元31根据存储模块40存储的第一预存算法,将接收的数据信息分成至少两部分信息段包括:
算法单元34根据存储模块40存储的第一预存算法获得一个大于1的自然数,数值作为接收的数据信息分割成接收的数据信息段的段数;
分段单元31根据算法单元34获得的自然数,将接收的数据信息进行分割,除最后一段接收的数据信息段外,其余接收的数据信息段长度相等。
较佳的,本系统通过采用第二预存算法获得的自然数作为数据信息散列的次数,从而实现动态散列,增加攻击者篡改难度。具体的,控制模块30的算法单元34还与散列单元32相连,其中:
控制模块30的散列单元32分别对原始数据信息段用存储模块40存储的散列函数进行散列包括:
算法单元34根据存储模块40存储的第二预存算法获得一个大于0的自然数,数值作为原始数据信息段散列的次数;第二预存算法含有待获取验证串的数据信息的参数;
散列单元32根据获得的散列次数,将原始数据信息段进行散列;
控制模块30的散列单元32分别对接收的数据信息段用存储模块40存储的散列函数进行散列包括:
算法单元34根据存储单元存储的第二预存算法获得一个大于0的自然数,数值作为接收数据信息段散列的次数;
散列单元32根据获得的散列次数,将控制模块30的接收模块20接收的数据信息段进行散列;
第一预存算法、第二预存算法为相同或不相同。
上述实施例中的存储模块存储的第一预存算法或第二预存算法可以选用现有技术或自己创造的多种算法,该算法需要与需要获取验证串的数据信息的参数相关,例如长度或者其里面的字符等,从而可以根据不同的数据信息得到相同或不同的结果,从而分割的段数或散列的次数相同或不同,本发明包括但不限于以下几种算法:
具体的,第一预存算法或第二预存算法包括但不限于以下几种算法,假设以下算法获得的自然数为N。
算法a:
获取待获取验证串的数据信息的总长度;
判断数据信息的总长度是否是7的倍数;若是,则算法获得的自然数为7;
否则,判断数据信息的总长度是否是6的倍数,若是,则算法获得的自然数为6;
否则,判断数据信息的总长度是否是5的倍数,若是,则算法获得的自然数为5;
否则,判断数据信息的总长度是否是4的倍数,若是,则算法获得的自然数为4;
否则,判断数据信息的总长度是否是3的倍数,若是,则算法获得的自然数为3;
否则,判断数据信息的总长度是否是2的倍数,若是,则算法获得的自然数为2;否则算法获得的自然数为7。
算法b:
1.计算出原数据长度的数值。
2.用校验码ISO 7064:1983.MOD 11-2计算法,求出整个数据长度数值的校验码,该校验码加1得到N,N必然是1至11中的某个数字。
算法c:
1.计算出原数据长度的数值。
2.将每个数据长度数值每一位的数字相加,得到一个数字,并讲改数字除以19,得到一个余数,改余数就作为N
第二预存算法除了上述算法外,还选用以下的算法,从而根据不同的数据信息段可以获得不同的大于0的自然数M即散列次数,本发明包括但不限于以下几种实施例或其实施例的变形。
第二预存算法(1):根据每个片段最后一个字符确定这个片段需要散列的次数M。注意,各片段散列次数不一定相同,M的值取值方法如下。
根据每个片段的最后一个字符在ASCII码中的序号减去31来确定。比如数字0在ASCII码中序数是48,那么M取17(即48-31),字母A在ASCII码中序数是65,那么M取34(65-31)。
第二预存算法(2):确定本片段相对其他片段的位置序数(从高位到低位,即从文本由左至右开始算起),假如位置序数的数值为n。再确定本片段的位置权数a,位置权数就取本片段的位置序数的数值,即a等于n。确定本片段的字符数的数值,根据本片段的位置序数n,取出字符数的数值的第n位的数字,如果没有第n位,则取最高位的数字,假如最终取到的数字是i。那么M=i*a。
第二预存算法(3):获取待获取验证串的数据信息分割后的数据信息段;然后分别取本数据信息段第一个字符和最后一个字符,找出这两字符在ASCII码中的序号,用这两个字符的序号相减的绝对值加1作为本片段的M。
较佳的,本系统中的控制模块的散列单元根据获得的散列次数,将原始数据信息段进行散列之后还包括:
散列单元将各原始数据信息段散列后的散列值串联起来,并采用预存散列函数整体散列一次;
散列单元根据获得的散列次数,将控制模块的接收模块接收的数据信息段进行散列之后还包括:
散列单元将各接收的数据信息段散列后的散列值串联起来,并采用存储模块存储的散列函数整体散列一次。
通过对片段散列后的值再整体散列一次,使得最终的验证串长度固定,看起来更为明了、美观,使用起来更为方便。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (22)
1.一种数据防篡改方法,其特征在于,包括步骤:
S100发送前将所述原始数据信息分段后,采用预存的散列函数进行散列获得原始数据信息验证串;
S200发送时同时发送所述原始数据及原始数据信息验证串;
S300接收时同时接收所述发送的数据信息及原始数据信息验证串;
S400接收后将所述接收的数据信息通过相同方法进行分段后,采用预存的散列函数进行散列获得接收的数据信息的验证串;
S500比较接收的数据信息的验证串是否与原始数据信息的验证串一致,若是,则接收的数据信息未被篡改,否则,所述接收的数据信息为篡改的数据信息。
2.根据权利要求1所述的一种数据防篡改方法,其特征在于,所述步骤S100包括步骤:
S110根据原始数据信息及第一预存算法将所述原始数据信息分成至少两部分信息段;所述第一预存算法含有待获取验证串的数据信息的参数;
S120分别对原始数据信息段用预存散列函数进行散列;
S130根据散列最终值生成原始数据信息验证串;
所述步骤S400还包括步骤:
S410根据接收的数据信息及第一预存算法将接收的数据信息分成至少两部分信息段;
S420分别对接收的数据信息段用预存散列函数进行散列;
S430根据散列最终值生成接收的数据信息验证串。
3.根据权利要求2所述的一种数据防篡改方法,其特征在于,
所述步骤S110还包括步骤:
S111根据原始数据信息及第一预存算法获得一个大于1的自然数,所述自然数作为原始数据信息分割成原始数据信息段的段数;所述第一预存算法含有待获取验证串的数据信息的参数;
S112根据获得的自然数,将所述原始数据信息进行分割,除最后一段原始数据信息段外,其余原始数据信息段长度相等;
所述步骤S410还包括步骤:
S411根据接收的数据信息及第一预存算法获得一个大于1的自然数,所述数值作为接收的数据信息分割成接收的数据信息段的段数;
S412根据获得的自然数,将所述接收的数据信息进行分割,除最后一段接收的数据信息段外外,其余信息段长度相等。
4.根据权利要求2所述的一种数据防篡改方法,其特征在于,所述步骤S120还包括步骤:
S121根据原始数据信息及第二预存算法获得一个大于0自然数,所述数值作为原始数据信息段散列的次数;所述第二预存算法含有待获取验证串的数据信息的参数;
S122根据获得的散列次数,将所述原始数据信息段进行散列;
所述步骤S420还包括步骤:
S421根据接收的数据信息及第二预存算法获得一个大于0的自然数,所述数值作为接收数据信息段散列的次数;
S422根据获得的散列次数,将所述接收的数据信息段进行散列;
所述第一预存算法、所述第二预存算法为相同或不相同。
5.根据权利要求3或4所述的一种数据防篡改方法,其特征在于,所述第一预存算法或第二预存算法包括步骤:
S011获取所述待获取验证串的数据信息的总长度;
S012判断所述数据信息的总长度是否是7的倍数;若是,则所述算法获得的自然数为7,否则进入步骤S013;
S013判断所述数据信息的总长度是否是6的倍数,若是,则所述算法获得的自然数为6;否则进入步骤S014;
S014判断所述数据信息的总长度是否是5的倍数,若是,则所述算法获得的自然数为5;否则进入步骤S015;
S015判断所述数据信息的总长度是否是4的倍数,若是,则所述算法获得的自然数为4;否则进入步骤S016;
S016判断所述数据信息的总长度是否是3的倍数,若是,则所述算法获得的自然数为3;否则进入步骤S017;
S017判断所述数据信息的总长度是否是2的倍数,若是,则所述算法获得的自然数为2;否则所述算法获得的自然数为7。
6.根据权利要求3或4所述的一种数据防篡改方法,其特征在于,所述第一预存算法或第二预存算法包括步骤:
S021获取所述待获取验证串的数据信息的总长度;
S022将所述数据信息的总长度值的每一位数字相加,得到一个数值,所述数值被19整除后获得一余数,所述余数为所述算法获得的自然数。
7.根据权利要求3或4所述的一种数据防篡改方法,其特征在于,所述第一预存算法或第二预存算法包括步骤:
S031获取所述待获取验证串的数据信息的总长度;
S032根据校验码ISO 7064:1983.MOD 11-2计算法,获得数据信息长度数值的校验码,将所述校验码加1从而得到所述算法获得的自然数。
8.根据权利要求4所述的一种数据防篡改方法,其特征在于,所述第二预存算法包括步骤:
S041获取所述待获取验证串的数据信息分割后的所述数据信息段;
S042根据所述数据信息段最后一个字符,查找在ASCII码中的相应序号;
S043取所述数据信息段的相应序号与31的差值作为所述算法获得的自然数。
9.根据权利要求4所述的一种数据防篡改方法,其特征在于,所述第二预存算法包括步骤:
S051获取所述待获取验证串的数据信息分割后的所述数据信息段;
S052将所述数据信息段进行排序标号,获得所述数据信息段的位置序数n;
S053根据所述位置序数n获得所述数据信息段的位置权数a,所述位置权数取所述数据信息段的位置序数,即a=n;
S054获取所述数据信息段的字符数的数值,根据所述数据信息段的位置序数n,查找出所述数据信息段的字符数的数值的第n位数字,若不存在第n位的数字,则直接取最高位的数字,若最终取得的值为i,则将取值i与所述位置权数a的乘积作为所述算法获得的自然数。
10.根据权利要求4所述的一种数据防篡改方法,其特征在于,所述第二预存算法包括步骤:
S061获取所述数据信息段的首字符和末字符,确定所述首字符和末字符在ASCII码中的序号;
S062获取所述首字符和末字符在ASCII码中的序号的差的绝对值,将所述绝对值加1获得的数值作为所述算法获得的自然数。
11.根据权利要求4所述的一种数据防篡改方法,其特征在于,还包括步骤:
S125将各原始数据信息段散列后的散列值串联起来,并采用预存散列函数整体散列一次;
S425将各接收的数据信息段散列后的散列值串联起来,并采用预存散列函数整体散列一次。
12.一种数据防篡改系统,其特征在于,包括发送模块、接收模块、存储模块、控制模块、及判断模块,且所述发送模块、接收模块、存储模块及判断模块分别与所述控制模块相连;其中:
所述发送模块发送原始数据信息前,所述控制模块将所述原始数据信息分段后,再采用存储模块存储的散列函数进行散列获得原始数据信息的验证串;
所述发送模块同时发送所述原始数据信息及原始数据信息验证串;
所述接收模块接收所述发送模块发送的数据信息及原始数据信息验证串;
所述控制模块将所述接收的数据信息分段后,再采用预存的散列函数进行散列获得接收的数据信息验证串;
所述判断模块比较所述接收的数据信息的验证串是否与原始数据信息的验证串一致,若是,则判断所述接收的数据信息未被篡改,否则,判断所述接收的数据信息为篡改的数据信息。
13.根据权利要求12所述的一种数据防篡改系统,其特征在于,所述控制模块还包括分段单元、散列单元和生成单元,且所述分段单元和所述生成单元分别与所述散列单元相连,其中:
所述控制模块将所述原始数据信息分段后,再采用存储模块存储的散列函数进行散列获得原始数据信息的验证串包括:
所述控制模块的分段单元根据原始数据信息及所述存储模块存储的第一预存算法,将所述原始数据信息分成至少两部分信息段;所述第一预存算法含有待获取验证串的数据信息的参数;
所述控制模块的散列单元分别对所述原始数据信息段用所述存储模块存储的散列函数进行散列;
所述控制模块的生成单元根据所述控制单元散列的最终值生成原始数据信息验证串;
所述控制模块将所述接收的数据信息分段后,再采用存储模块存储的散列函数进行散列获得接收的数据信息验证串包括:
所述控制模块的分段单元根据所述接收模块接收的数据信息及所述存储模块存储的第一预存算法,将所述接收的数据信息分成至少两部分信息段;
所述控制模块的散列单元分别对所述接收的数据信息段用所述存储模块存储的散列函数进行散列;
所述控制模块的生成单元根据所述控制单元散列的最终值生成接收的数据信息验证串。
14.根据权利要求13所述的一种数据防篡改系统,其特征在于,所述控制模块还包括算法单元,且所述算法单元与所述分段单元相连;其中:
所述控制模块的分段单元根据所述存储模块存储的第一预存算法,将所述原始数据信息分成至少两部分信息段包括:
所述算法单元根据所述存储模块存储的第一预存算法获得一个大于1的自然数,所述数值作为原始数据信息分割成原始数据信息段的段数;
所述分段单元根据所述算法单元获得的自然数,将所述原始数据信息进行分割,除最后一段原始数据信息段外,其余原始数据信息段长度相等;
所述控制模块的分段单元根据所述存储模块存储的第一预存算法,将所述接收的数据信息分成至少两部分信息段包括:
所述算法单元根据所述存储模块存储的第一预存算法获得一个大于1的自然数,所述数值作为接收的数据信息分割成接收的数据信息段的段数;
所述分段单元根据所述算法单元获得的自然数,将所述接收的数据信息进行分割,除最后一段接收的数据信息段外,其余接收的数据信息段长度相等。
15.根据权利要求13所述的一种数据防篡改系统,其特征在于,所述控制模块的所述算法单元还与所述散列单元相连,其中:
所述控制模块的散列单元分别对所述原始数据信息段用所述存储模块存储的散列函数进行散列包括:
所述算法单元根据所述存储模块存储的第二预存算法获得一个大于0的自然数,所述数值作为原始数据信息段散列的次数;所述第二预存算法含有待获取验证串的数据信息的参数;
所述散列单元根据获得的散列次数,将所述原始数据信息段进行散列;
所述控制模块的散列单元分别对所述接收的数据信息段用所述存储模块存储的散列函数进行散列包括:
所述算法单元根据所述存储单元存储的第二预存算法获得一个大于0的自然数,所述数值作为接收数据信息段散列的次数;
所述散列单元根据获得的散列次数,将所述控制模块的接收模块接收的数据信息段进行散列;
所述第一预存算法、所述第二预存算法为相同或不相同。
16.根据权利要求14或15所述的一种数据防篡改系统,其特征在于,所述存储模块存储的所述第一预存算法或所述第二预存算法包括:
获取所述待获取验证串的数据信息的总长度;
判断所述数据信息的总长度是否是7的倍数;若是,则所述算法获得的自然数为7;
否则,判断所述数据信息的总长度是否是6的倍数,若是,则所述算法获得的自然数为6;
否则,判断所述数据信息的总长度是否是5的倍数,若是,则所述算法获得的自然数为5;
否则,判断所述数据信息的总长度是否是4的倍数,若是,则所述算法获得的自然数为4;
否则,判断所述数据信息的总长度是否是3的倍数,若是,则所述算法获得的自然数为3;
否则,判断所述数据信息的总长度是否是2的倍数,若是,则所述算法获得的自然数为2;否则所述算法获得的自然数为7。
17.根据权利要求14或15所述的一种数据防篡改系统,其特征在于,所述存储模块存储的所述第一预存算法或所述第二预存算法包括:
获取所述待获取验证串的数据信息的总长度值;
将所述数据信息总长度值的每一位数字相加,得到一个数值,所述数值被19整除后获得一余数,所述余数为所述算法获得的自然数。
18.根据权利要求14或15所述的一种数据防篡改系统,其特征在于,所述存储模块存储的第一预存算法或第二预存算法包括:
获取所述待获取验证串的数据信息的总长度值;
根据校验码ISO 7064:1983.MOD 11-2计算法,获得数据信息总长度数值的校验码,将所述校验码加1从而得到所述算法获得的自然数。
19.根据权利要求15所述的一种数据防篡改系统,其特征在于,所述存储模块存储的第二预存算法包括:
获取所述待获取验证串的数据信息分割后的所述数据信息段;
根据所述数据信息段最后一个字符,查找在ASCII码中的相应序号;
取所述数据信息段的相应序号与31的差值作为所述算法获得的自然数。
20.根据权利要求15所述的一种数据防篡改系统,其特征在于,所述存储模块存储的第二预存算法包括:
获取所述待获取验证串的数据信息分割后的所述数据信息段;
将所述数据信息段进行排序标号,获得所述数据信息段的位置序数n;
根据所述位置序数n获得所述数据信息段的位置权数a,所述位置权数取所述数据信息段的位置序数,即a=n;
获取所述数据信息段的字符的数值,根据所述数据信息段的位置序的自然数n,查找出所述数据信息段的字符的自然数的第n位数字,若不存在第n位的数字,则直接取最高位的数字,若取得的值为i,则将取值i与所述位置权数a的乘积作为所述算法获得的自然数。
21.根据权利要求15所述的一种数据防篡改系统,其特征在于,所述存储模块存储的第二预存算法包括:
获取所述待获取验证串的数据信息分割后的所述数据信息段;
获取所述数据信息段的首字符和末字符,确定所述首字符和末字符在ASCII码中的序号;
获取所述首字符和末字符在ASCII码中的序号的差的绝对值,将所述绝对值加1获得的数值作为所述算法获得的自然数。
22.根据权利要求15所述的一种数据防篡改系统,其特征在于,
所述散列单元根据获得的散列次数,将所述原始数据信息段进行散列之后还包括:
所述散列单元将各原始数据信息段散列后的散列值串联起来,并采用预存散列函数整体散列一次;
所述散列单元根据获得的散列次数,将所述控制模块的接收模块接收的数据信息段进行散列之后还包括:
所述散列单元将各接收的数据信息段散列后的散列值串联起来,并采用所述存储模块存储的散列函数整体散列一次。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610970554.3A CN106570423A (zh) | 2016-10-28 | 2016-10-28 | 一种数据防篡改方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610970554.3A CN106570423A (zh) | 2016-10-28 | 2016-10-28 | 一种数据防篡改方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106570423A true CN106570423A (zh) | 2017-04-19 |
Family
ID=58540028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610970554.3A Pending CN106570423A (zh) | 2016-10-28 | 2016-10-28 | 一种数据防篡改方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106570423A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299038A (zh) * | 2018-08-29 | 2019-02-01 | 南京数睿数据科技有限公司 | 一种适用于区块链的海量数据摘要生成系统和方法 |
CN110858832A (zh) * | 2018-08-22 | 2020-03-03 | 阿里巴巴集团控股有限公司 | 口令信息加固与数据处理方法、设备、系统及存储介质 |
CN112115522A (zh) * | 2020-09-27 | 2020-12-22 | 成都中科合迅科技有限公司 | 利用散列算法实现数据的可信存储的方法 |
CN112463955A (zh) * | 2020-11-25 | 2021-03-09 | 浪潮商用机器有限公司 | 一种文本摘要生成方法及相关装置 |
CN113268737A (zh) * | 2020-02-15 | 2021-08-17 | 阿里巴巴集团控股有限公司 | 环境安全验证方法、系统和客户端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101594227A (zh) * | 2008-05-30 | 2009-12-02 | 华为技术有限公司 | 数据加密和解密的方法、装置及通信系统 |
CN102497597A (zh) * | 2011-12-05 | 2012-06-13 | 中国华录集团有限公司 | 高清视频文件的完整性校验方法 |
CN102752102A (zh) * | 2012-07-02 | 2012-10-24 | 珠海全志科技股份有限公司 | 数据包分段加密传输处理方法和装置 |
CN102833259A (zh) * | 2012-09-03 | 2012-12-19 | 中科华核电技术研究院有限公司 | 系统间数据防篡改检测方法、校验码生成方法及装置 |
-
2016
- 2016-10-28 CN CN201610970554.3A patent/CN106570423A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101594227A (zh) * | 2008-05-30 | 2009-12-02 | 华为技术有限公司 | 数据加密和解密的方法、装置及通信系统 |
CN102497597A (zh) * | 2011-12-05 | 2012-06-13 | 中国华录集团有限公司 | 高清视频文件的完整性校验方法 |
CN102752102A (zh) * | 2012-07-02 | 2012-10-24 | 珠海全志科技股份有限公司 | 数据包分段加密传输处理方法和装置 |
CN102833259A (zh) * | 2012-09-03 | 2012-12-19 | 中科华核电技术研究院有限公司 | 系统间数据防篡改检测方法、校验码生成方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110858832A (zh) * | 2018-08-22 | 2020-03-03 | 阿里巴巴集团控股有限公司 | 口令信息加固与数据处理方法、设备、系统及存储介质 |
CN109299038A (zh) * | 2018-08-29 | 2019-02-01 | 南京数睿数据科技有限公司 | 一种适用于区块链的海量数据摘要生成系统和方法 |
CN113268737A (zh) * | 2020-02-15 | 2021-08-17 | 阿里巴巴集团控股有限公司 | 环境安全验证方法、系统和客户端 |
CN112115522A (zh) * | 2020-09-27 | 2020-12-22 | 成都中科合迅科技有限公司 | 利用散列算法实现数据的可信存储的方法 |
CN112115522B (zh) * | 2020-09-27 | 2023-10-20 | 成都中科合迅科技有限公司 | 利用散列算法实现数据的可信存储的方法 |
CN112463955A (zh) * | 2020-11-25 | 2021-03-09 | 浪潮商用机器有限公司 | 一种文本摘要生成方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106570423A (zh) | 一种数据防篡改方法及系统 | |
Simmons | Subliminal channels; past and present | |
US11017036B2 (en) | Publicly verifiable proofs of space | |
EP0522473B1 (en) | Cryptographic identity verification method | |
JP2511464B2 (ja) | 識別及び署名方法及び装置 | |
Stevens et al. | Chosen-prefix collisions for MD5 and applications | |
EP2751949B1 (en) | Multiple table tokenization | |
CN110110163A (zh) | 安全子字符串搜索以过滤加密数据 | |
WO2016202952A1 (en) | Digital token exchange system | |
CN106850187A (zh) | 一种隐私字符信息加密查询方法及系统 | |
US8645281B2 (en) | Process for authenticating an end user | |
CN112487408B (zh) | 用于车内ecu的安全访问方法、系统及存储介质 | |
CN112132577B (zh) | 一种基于区块链的多重监管的交易处理方法及装置 | |
CN104636764A (zh) | 一种图像隐写分析方法以及其装置 | |
Tzong-Chen et al. | Authenticating passwords over an insecure channel | |
US11101989B2 (en) | Trusted ring | |
CN115552397A (zh) | 多方和多用途抗量子签名和密钥建立 | |
CN105005733B (zh) | 字库初始化方法、字符显示方法及系统、智能密钥设备 | |
US5787178A (en) | Computerized method for signing a message | |
CN113645036A (zh) | 一种基于环签名和智能合约的以太坊交易隐私保护方法 | |
Miao et al. | Verifiable data streaming protocol supporting update history queries | |
CN115168909B (zh) | 一种基于比较索引的密文数据范围查询方法和系统 | |
CN111159774A (zh) | 去中心化的智能合约托管钱包的方法及系统 | |
CN112446021B (zh) | 基于sm9加密的指纹认证方法、装置及相关设备 | |
CA2361627A1 (en) | Method, system, device for proving the authenticity of an entity and/or the integrity and/or the authenticity of a message |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170419 |
|
WD01 | Invention patent application deemed withdrawn after publication |