CN103559458A - 数据散列获取方法及其系统 - Google Patents

数据散列获取方法及其系统 Download PDF

Info

Publication number
CN103559458A
CN103559458A CN201310467782.5A CN201310467782A CN103559458A CN 103559458 A CN103559458 A CN 103559458A CN 201310467782 A CN201310467782 A CN 201310467782A CN 103559458 A CN103559458 A CN 103559458A
Authority
CN
China
Prior art keywords
data
subsequence
word
carried out
sequence
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
Application number
CN201310467782.5A
Other languages
English (en)
Other versions
CN103559458B (zh
Inventor
盛先富
欧阳敏宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GUANGZHOU HUAXUN NETWORK TECHNOLOGY Co Ltd
Original Assignee
GUANGZHOU HUAXUN NETWORK TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by GUANGZHOU HUAXUN NETWORK TECHNOLOGY Co Ltd filed Critical GUANGZHOU HUAXUN NETWORK TECHNOLOGY Co Ltd
Priority to CN201310467782.5A priority Critical patent/CN103559458B/zh
Publication of CN103559458A publication Critical patent/CN103559458A/zh
Application granted granted Critical
Publication of CN103559458B publication Critical patent/CN103559458B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种数据散列获取方法及其系统,首先将待处理数据序列进行数据填充至预定字长,获得数据字序列;将所述数据字序列划分为至少一个子序列,其中,每一所述子序列包括多个数据字;对所述数据字序列执行多轮迭代的数据注入处理;根据迭代后获得的中间值提取部分数据字,组成数据散列值。由于交替采用基于非线性反馈函数的附加式发生器和线性反馈函数的附加式发生器构造轮函数,通过所述轮函数对数据序列进行反馈步进、置换等处理,快速获得可变长、抗碰撞的消息散列值。该系统结构简单,实现速度较快,易于硬件实现,适用于在安卓、Windows等操作系统的嵌入式终端中保护数据完整性。

Description

数据散列获取方法及其系统
技术领域
本发明涉及数据加密的技术领域,特别是涉及一种数据散列获取方法,以及一种数据散列获取系统。
背景技术
数据完整性是数据安全的一个重要方面。散列技术是保护数据完整性的关键技术。目前国际上通用的数据散列技术如MD5、SHA-1、RIPEMD等,主要基于MD4算法,采用压缩函数对固定长度的数据分组进行多轮压缩处理,获得定长的散列值。但近几年来,上述数据散列技术已变得越来越容易被破解,安全性越来越得不到保证,并且其运算过程比较复杂,其可用性面临严峻的挑战。发明内容
针对上述数据散列技术安全性低,运算复杂的问题,本发明提出一种简单、处理速度快,并且安全性较高的数据散列获取方法及系统。
一种数据散列获取方法,包括以下步骤:
将待处理数据序列进行数据填充至预定字长,获得数据字序列;
将所述数据字序列划分为至少一个子序列,其中,每一所述子序列包括多个数据字;
对所述数据字序列执行如下的多轮迭代:
for i=0to nb-1;
S ← S ⊕ FI ( p 16 i , p 16 i + 1 , p 16 i + 2 , . . . , p 16 i + 15 ) ;
S←R(S);
其中,i+1为迭代轮数,nb为所述数据字序列包含的子序列的个数,S为每一轮迭代中各个所述子序列的中间值,S的初始值为0,{p16i,p16i+1,p16i+2,…,p16i +15}为第i+1个子序列;FI为注入函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;R(S)为轮函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为一个循环序列,采用基于非线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行非线性反馈变换;对所述子序列包含的数据字,进行按位步进的循环移位变换;再将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;
根据变换后获得的中间值S提取部分数据字,组成数据散列值。
一种数据散列获取系统,包括:
数据填充模块,用于将待处理数据序列进行数据填充至预定字长,获得数据字序列;
数据划分模块,用于将所述数据字序列划分为至少一个子序列,其中,每一所述子序列包括多个数据字;
数据注入模块,用于对所述数据字序列执行如下的多轮迭代:
for i=0to nb-1;
S ← S ⊕ FI ( p 16 i , p 16 i + 1 , p 16 i + 2 , . . . , p 16 i + 15 ) ;
S←R(S);
其中,i+1为迭代轮数,nb为所述数据字序列包含的子序列的个数,S为每一轮迭代中各个所述子序列的中间值,S的初始值为0,{p16i,p16i+1,p16i+2,…,p16i +15}为第i+1个子序列;FI为注入函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;R(S)为轮函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为一个循环序列,采用基于非线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行非线性反馈变换;对所述子序列包含的数据字,进行按位步进的循环移位变换;再将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;
输出模块,用于根据变换后获得的中间值S提取部分数据字,组成数据散列值。
本发明的数据散列获取方法及其系统中,首先对待处理消息序列进行填充,然后交替采用基于非线性反馈函数的附加式发生器和线性反馈函数的附加式发生器,构造一个轮函数;将所述轮函数应用于消息注入阶段,对消息进行反馈步进、置换等处理,快速获得可变长、抗碰撞的消息散列值。基于非线性反馈函数和线性反馈函数的附加式发生器具有良好的密码学性能,在相应的有限域内不存在数据的冲突。采用附加式发生器构造散列方案结构简单,实现速度较快,易于硬件实现。因此本发明的数据散列获取方法及其系统能够基于附加式发生器对消息进行单向散列处理,以保证数据的完整性和可鉴别性,且具有安全性较高且实现简单、处理速度快的优点。
附图说明
图1是本发明数据散列获取方法第一实施方式的流程示意图;
图2是本发明数据散列获取方法中采用的一种基于线性反馈变换的附加式发生器的示意图;
图3是本发明数据散列获取方法中采用的轮函数的操作流程示意图;
图4是本发明数据散列获取方法中采用的一种基于非线性反馈变换的附加式发生器的示意图;
图5是本发明数据散列获取方法中采用的一种按位步进的循环移位变换的示意图;
图6是本发明数据散列获取方法第二实施方式的流程示意图;
图7是本发明数据散列获取系统的结构示意图;
图8是本发明数据散列获取系统第二实施方式的结构示意图。
具体实施方式
请参阅图1,图1是本发明数据散列获取方法第一实施方式的流程示意图。
所述数据散列获取方法,包括以下步骤:
S102,将待处理数据序列进行数据填充至预定字长,获得数据字序列;
S104,将所述数据字序列划分为至少一个子序列,其中,每一所述子序列包括多个数据字;
S106,对所述数据字序列执行如下多轮迭代的数据注入处理:
for i=0to nb-1;
S ← S ⊕ FI ( p 16 i , p 16 i + 1 , p 16 i + 2 , . . . , p 16 i + 15 ) ;
S←R(S);
其中,i+1为迭代轮数,nb为所述数据字序列包含的子序列的个数,S为每一轮迭代中各个所述子序列的中间值,S的初始值为0,{p16i,p16i+1,p16i+2,…,p16i +15}为第i+1个子序列;FI为注入函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;R(S)为轮函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为一个循环序列,采用基于非线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行非线性反馈变换;对所述子序列包含的数据字,进行按位步进的循环移位变换;再将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;
S108,根据变换后获得的中间值S提取部分数据字,组成数据散列值。
本发明的数据散列获取方法能够基于附加式发生器对数据进行单向散列处理,附加式发生器类似于反馈移位寄存器,但它用随机字代替反馈移位寄存器中的随机位,相当于多个反馈移位寄存器并发进行反馈移位,因而非常高效,并且其安全性能等价于响应的反馈移位寄存器。本发明的数据散列获取方法可以保证数据的完整性和可鉴别性,且具有实现简单、处理速度快的优点。
对于上述步骤S102,首先将待处理数据序列进行数据填充,获得具有预定字长的数据字序列。
所述数据字序列可以具有多种预定字长,具体的预定字长可由使用者选择,例如可设置为16的整数倍字长,或者32的整数倍字长。
以设置为16的整数倍字长为例,首先判断所述待处理数据序列的数据长度是否等于16个数据字的整数倍。如果所述待处理数据序列的数据长度等于16个数据字的整数倍,则直接获取所述待处理数据序列为所述数据字序列;否则,将待处理数据序列进行数据填充至16个数据字的整数倍,获取数据填充后得到的数据序列为所述数据字序列。
上述实施例中数据填充方案是将待处理数据序列填充至16的整数倍字长,即512位的倍数长(每个数据字32位的情况)。如果数据序列长度等于16个数据字的整数倍,则不需要数据填充;否则先填充一个1,然后填充若干个0,使得整个数据字序列是16的整数倍字长,亦即消息数据位长为512的整数倍。
例如对长度为1000个字的消息串,需要填充至1008个字。对长度为1000个字的待处理数据序列,需要填充10000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000等8个字。
经过填充后的数据字序列为
Figure BDA0000392929440000051
其中nb为512位明文数据块(16个数据字)的数量。上面1000个字的消息序列,填充后长1008个字,共nb=63个数据块。
所述数据字序列可以具有多种预定字长,本领域技术人员可以参照上述实施例中的方法将所述待处理数据序列填充至其他的预定字长,获取不同字长的数据字序列。
鉴于目前多数PC机、PDA和智能卡等为32位处理器,因此上述实施例主要针对32位字长的待处理数据序列,即每个所述数据字为32位的数据字,如果所述待处理数据序列具有其他的字长,例如64位字长,则本领域技术人员可根据本发明的提示进行适应性的调整。
对于上述步骤S104,将所述数据字序列划分为至少一个子序列,其中,每一所述子序列包括多个数据字。
对应上述实施例,本步骤中同样可以将所述数据字序列划分为各种大小的子序列。例如划分为多个所述包含16个数据字的子序列,或者划分为多个所述包含32个数据字的子序列等等。
仍以所述子序列包含16个32位的数据字为例,即将所述数据字序列划分为至少一个子序列的步骤中,划分的每个所述子序列包含16个数据字。第i+1个所述子序列记为{p16i,p16i+1,p16i+2,…,p16i+15}。
在步骤S106中,为获取快速高效地获取待处理数据序列的散列值,对所述数据字序列执行如下的多轮迭代:
for i=0to nb-1;
S ← S ⊕ FI ( p 16 i , p 16 i + 1 , p 16 i + 2 , . . . , p 16 i + 15 ) ;
S←R(S);
其中,i+1为迭代轮数,nb为所述数据字序列包含的子序列的个数,S为每一轮迭代中各个所述子序列的中间值,S={x0,x1,x2,…,x14,x15},每一xi为一个32位字,S的初始值为0;
所述FI为注入函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换。
作为一种优选实施例,所述基于线性反馈变换的附加式发生器xi=xi-11+xi-13+xi-14+xi-16,如图2所示。即,的操作为:
将该子序列作为长度为16个数据字的循环序列,采用基于线性反馈变换的附加式发生器:xi=xi-11+xi-13+xi-14+xi-16,按字步进地对所述子序列中的每个数据字执行线性反馈处理。并将所述反馈处理步进16次后,对所有的数据字都执行反馈处理,所得16字长的数据序列与上一次迭代中的中间值S进行逐位异或后,得到新的中间值S,并储存。
所述R(S)为轮函数,用于对所述第i+1个子序列执行以下操作,如图3所示:
S302,将所述子序列作为一个循环序列,采用基于非线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行非线性反馈变换;
S304,对所述子序列包含的数据字,进行按位步进的循环移位变换;
S306,将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换。
其中,所述基于非线性反馈变换的附加式发生器作为一个实施例优选设置为:
Figure BDA0000392929440000073
如图4所示。
则执行非线性反馈变换的步骤包括:将该子序列作为长度为16个数据字的循环序列,采用基于非线性反馈变换的附加式发生器:
Figure BDA0000392929440000074
Figure BDA0000392929440000075
按字步进地对所述子序列中的每个数据字执行所述非线性反馈处理。即将所述非线性反馈处理按字步进16次,对每个数据字执行所述非线性反馈处理,所得的中间值S重新储存为所述子序列的中间值S。
在本步骤中,所述子序列的取值为执行上述
Figure BDA0000392929440000071
Figure BDA0000392929440000072
处理后的中间值S。
所述进行按位步进的循环移位变换的步骤优选包括:对所述子序列中每一个数据字,按照以下移位变换公式:xi=xi>>>((i+1)(i+2)/2mod32),进行按位步进的循环移位变换,如图5所示。将所述循环移位变换按字步进16次,对每个数据字执行所述循环移位变换,所得的中间值S重新储存为所述子序列的中间值S。
所述执行线性反馈变换的步骤优选包括:
将该子序列作为长度为16个数据字的循环序列,采用基于线性反馈变换的附加式发生器:xi=xi-11+xi-13+xi-14+xi-16,按字步进地对所述子序列中的每个数据字执行线性反馈处理。将所述线性反馈变换按字步进16次,对每个数据字执行所述线性反馈变换,所得的中间值S重新储存为所述子序列的中间值S。
上述处理中,根据安全性要求,所述轮函数中非线性反馈步进和线性反馈步进次数可以根据需要增加,所述非线性反馈附加式发生器可以采用同类基于M-序列的附加式发生器,如
Figure BDA0000392929440000077
Figure BDA0000392929440000078
所述线性反馈附加式发生器可以采用同类延迟发生器,如xi=xi-11+xi-12+xi-13+xi-16或xi=xi-8+xi-9+xi-11+xi-16等等。
请参阅图6,图6是本发明数据散列获取方法第二实施方式的流程示意图。
本实施方式的数据散列获取方法与第一实施方式的主要区别在于,在执行多轮迭代的数据注入处理之后,根据变换后获得的中间值S提取部分数据字,组成数据散列值之前,进一步包括以下数据混淆的步骤S107:
采用所述轮函数R对所述中间值S进一步进行多轮变换:
for i=0to N,其中N≤nb-1:
S←R(S)。
优选地,所述迭代轮数N=15,即采用所述轮函数R对所述中间值S进一步进行16轮变换。如果有特殊的安全要求,所述轮函数的迭代轮数也可增加到24轮甚至32轮,即:for i=0to23:S←R(S),或for i=0to31:S←R(S)。
通过上述数据混淆处理,可以进一步使最终得到的散列值难以破解,提高所述散列值的安全性。
本发明数据散列获取方法第三实施方式与第二实施方式的主要区别在于,根据变换后获得的中间值S提取部分数据字,组成数据散列值的步骤包括:
采用所述轮函数R对执行数据混淆之后的所述中间值S进一步进行多轮变换:
for i=0to n,其中n≤nb-1:
S←R(S);
取每一轮的中间值S的第1个数据字组成所述数据散列值序列。
优选地,上述迭代轮数n=7,如此,可构造出一个256(32*8)个字长的消息散列值。
同样,如上述轮函数R循环迭代4次可得到128位散列值,循环迭代5次可得到160位散列值,循环迭代6次可得到192位散列值,循环迭代7次可得到224位散列值,循环迭代12次可得到384位散列值,循环迭代n次可构成任意的n*32位散列值。
通过在本实施方式中,所述数据散列获取方法包括消息填充、消息注入、消息混淆和消息输出4个阶段。分别在消息注入、消息混淆和消息输出阶段都使用本发明的轮函数对数据序列进行处理。所述轮函数交替采用基于M-序列反馈函数的非线性附加式发生器和m-序列反馈函数的线性附加式发生器,对消息进行反馈步进、循环移位等处理,快速获得可变长、抗碰撞的消息散列值。本发明可获得任意长度的消息散列值,具有较高的线性复杂度,算法结构简单,易于硬件实现。
本发明的数据散列获取方法具有以下优点:
本发明采用线性反馈附加式发生器和非线性反馈附加式发生器组合构造散列,执行效率、安全性能和硬件实行性能优于采用传统方法构造的散列。
本发明中采用基于M-序列的非线性附加式发生器用于轮函数,具有良好的伪随机型、较高的线性复杂度等特性,算法结构简单,易于硬件实现。
本发明可以根据需要生成任意32位之倍数长度的消息散列值。
请参阅图7,图7是本发明数据散列获取系统的结构示意图。
所述数据散列获取系统,包括:
数据填充模块702,用于将待处理数据序列进行数据填充至预定字长,获得数据字序列;
数据划分模块704,用于将所述数据字序列划分为至少一个子序列,其中,每一所述子序列包括多个数据字;
数据注入模块706,用于对所述数据字序列执行如下的多轮迭代:
for i=0to nb-1;
S ← S ⊕ FI ( p 16 i , p 16 i + 1 , p 16 i + 2 , . . . , p 16 i + 15 ) ;
S←R(S);
其中,i+1为迭代轮数,nb为所述数据字序列包含的子序列的个数,S为每一轮迭代中各个所述子序列的中间值,S的初始值为0,{p16i,p16i+1,p16i+2,…,p16i +15}为第i+1个子序列;FI为注入函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;R(S)为轮函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为一个循环序列,采用基于非线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行非线性反馈变换;对所述子序列包含的数据字,进行按位步进的循环移位变换;再将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;
输出模块708,用于根据变换后获得的中间值S提取部分数据字,组成数据散列值。
本发明的数据散列获取系统能够基于附加式发生器对数据进行单向散列处理,附加式发生器类似于反馈移位寄存器,但它用随机字代替反馈移位寄存器中的随机位,相当于多个反馈移位寄存器并发进行反馈移位,因而非常高效,并且其安全性能等价于响应的反馈移位寄存器。本发明的数据散列获取方法可以保证数据的完整性和可鉴别性,且具有实现简单、处理速度快的优点。
所述数据填充模块702首先将待处理数据序列进行数据填充,获得具有预定字长的数据字序列。
所述数据字序列可以具有多种预定字长,具体的预定字长可由使用者选择,例如可设置为16的整数倍字长,或者32的整数倍字长。
以设置为16的整数倍字长为例,首先判断所述待处理数据序列的数据长度是否等于16个数据字的整数倍。如果所述待处理数据序列的数据长度等于16个数据字的整数倍,则直接获取所述待处理数据序列为所述数据字序列;否则,将待处理数据序列进行数据填充至16个数据字的整数倍,获取数据填充后得到的数据序列为所述数据字序列。
上述实施例中所述数据填充模块702将待处理数据序列填充至16的整数倍字长,即512位的倍数长(每个数据字32位的情况)。如果数据序列长度等于16个数据字的整数倍,则不需要数据填充;否则先填充一个1,然后填充若干个0,使得整个数据字序列是16的整数倍字长,亦即消息数据位长为512的整数倍。
例如对长度为1000个字的消息串,需要填充至1008个字。对长度为1000个字的待处理数据序列,需要填充10000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000、00000000000000000000000000000000等8个字。
经过填充后的数据字序列为
Figure BDA0000392929440000111
其中nb为512位明文数据块(16个数据字)的数量。上面1000个字的消息序列,填充后长1008个字,共nb=63个数据块。
所述数据字序列可以具有多种预定字长,本领域技术人员可以参照上述实施例中的方法将所述待处理数据序列填充至其他的预定字长,获取不同字长的数据字序列。
鉴于目前多数PC机、PDA和智能卡等为32位处理器,因此上述实施例主要针对32位字长的待处理数据序列,即每个所述数据字为32位的数据字,如果所述待处理数据序列具有其他的字长,例如64位字长,则本领域技术人员可根据本发明的提示进行适应性的调整。
所述数据划分模块704将所述数据字序列划分为至少一个子序列,其中,每一所述子序列包括多个数据字。
所述数据划分模块704同样可以将所述数据字序列划分为各种大小的子序列。例如划分为多个所述包含16个数据字的子序列,或者划分为多个所述包含32个数据字的子序列等等。
仍以所述子序列包含16个32位的数据字为例,即将所述数据字序列划分为至少一个子序列的步骤中,划分的每个所述子序列包含16个数据字。第i+1个所述子序列记为{p16i,p16i+1,p16i+2,…,p16i+15}。
所述数据注入模块706为获取快速高效地获取待处理数据序列的散列值,对所述数据字序列执行如下的多轮迭代:
for i=0to nb-1;
S ← S ⊕ FI ( p 16 i , p 16 i + 1 , p 16 i + 2 , . . . , p 16 i + 15 ) ;
S←R(S);
其中,i+1为迭代轮数,nb为所述数据字序列包含的子序列的个数,S为每一轮迭代中各个所述子序列的中间值,S={x0,x1,x2,…,x14,x15},每一xi为一个32位字,S的初始值为0;
所述FI为注入函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换。
作为一种优选实施例,所述基于线性反馈变换的附加式发生器xi=xi-11+xi-13+xi-14+xi-16,如图2所示。即,
Figure BDA0000392929440000121
的操作为:
将该子序列作为长度为16个数据字的循环序列,采用基于线性反馈变换的附加式发生器:xi=xi-11+xi-13+xi-14+xi-16,按字步进地对所述子序列中的每个数据字执行线性反馈处理。并将所述反馈处理步进16次后,对所有的数据字都执行反馈处理,所得16字长的数据序列与上一次迭代中的中间值S进行逐位异或后,得到新的中间值S,并储存。
所述R(S)为轮函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为一个循环序列,采用基于非线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行非线性反馈变换;对所述子序列包含的数据字,进行按位步进的循环移位变换;再将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换。
其中,所述基于非线性反馈变换的附加式发生器作为一个实施例优选设置为:
Figure BDA0000392929440000122
如图4所示
则所述数据注入模块706执行的非线性反馈变换包括:将该子序列作为长度为16个数据字的循环序列,采用基于非线性反馈变换的附加式发生器:
Figure BDA0000392929440000123
Figure BDA0000392929440000124
按字步进地对所述子序列中的每个数据字执行所述非线性反馈处理。即将所述非线性反馈处理按字步进16次,对每个数据字执行所述非线性反馈处理,所得的中间值S重新储存为所述子序列的中间值S。
所述子序列的取值为执行上述 S ← S ⊕ FI ( p 16 i , p 16 i + 1 , p 16 i + 2 , . . . , p 16 i + 15 ) ; 处理后的中间值S。
所述数据注入模块706进行按位步进的循环移位变换包括:对所述子序列中每一个数据字,按照以下移位变换公式:xi=xi>>>((i+1)(i+2)/2mod32),进行按位步进的循环移位变换,如图5所示。将所述循环移位变换按字步进16次,对每个数据字执行所述循环移位变换,所得的中间值S重新储存为所述子序列的中间值S。
所述数据注入模块706执行的线性反馈变换包括:
将该子序列作为长度为16个数据字的循环序列,采用基于线性反馈变换的附加式发生器:xi=xi-11+xi-13+xi-14+xi-16,按字步进地对所述子序列中的每个数据字执行线性反馈处理。将所述线性反馈变换按字步进16次,对每个数据字执行所述线性反馈变换,所得的中间值S重新储存为所述子序列的中间值S。
上述处理中,根据安全性要求,所述轮函数中非线性反馈步进和线性反馈步进次数可以根据需要增加,所述非线性反馈附加式发生器可以采用同类基于M-序列的附加式发生器,如
Figure BDA0000392929440000131
Figure BDA0000392929440000132
Figure BDA0000392929440000133
所述线性反馈附加式发生器可以采用同类延迟发生器,如xi=xi-11+xi-12+xi-13+xi-16或xi=xi-8+xi-9+xi-11+xi-16等等。
请参阅图8,图8是本发明数据散列获取系统第二实施方式的结构示意图。
本实施方式的数据散列获取系统与第一实施方式的主要区别在于,进一步包括数据混淆模块707,所述数据混淆模块707用于采用所述轮函数R对所述中间值S进一步进行多轮变换:
for i=0to N,其中N≤nb-1:
S←R(S)。
优选地,所述迭代轮数N=15,即采用所述轮函数R对所述中间值S进一步进行16轮变换。如果有特殊的安全要求,所述轮函数的迭代轮数也可增加到24轮甚至32轮,即:for i=0to23:S←R(S),或for i=0to31:S←R(S)。
通过上述数据混淆处理,可以进一步使最终得到的散列值难以破解,提高所述散列值的安全性。
本发明数据散列获取系统第三实施方式与第二实施方式的主要区别在于,所述输出模块708进一步采用所述轮函数R对执行数据混淆之后的所述中间值S进行如下多轮变换:
for i=0to n,其中n≤nb-1:
S←R(S);
取每一轮的中间值S的第1个数据字组成所述数据散列值序列。
优选地,上述迭代轮数n=7,如此,可构造出一个256(32*8)个字长的消息散列值。
同样,如上述轮函数R循环迭代4次可得到128位散列值,循环迭代5次可得到160位散列值,循环迭代6次可得到192位散列值,循环迭代7次可得到224位散列值,循环迭代12次可得到384位散列值,循环迭代n次可构成任意的n*32位散列值。
通过在本实施方式中,所述数据散列获取系统包括数据填充模块、数据注入模块、数据混淆模块和输出模块,4个模块。分别在消息注入、消息混淆和消息输出阶段都使用本发明的轮函数对数据序列进行处理。所述轮函数交替采用基于M-序列反馈函数的非线性附加式发生器和m-序列反馈函数的线性附加式发生器,对消息进行反馈步进、循环移位等处理,快速获得可变长、抗碰撞的消息散列值。本发明可获得任意长度的消息散列值,具有较高的线性复杂度,算法结构简单,易于硬件实现。
本领域普通技术人员可以理解实现上述实施方式中的全部或部分流程以及对应的系统,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各实施方式的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种数据散列获取方法,其特征在于,包括以下步骤:
将待处理数据序列进行数据填充至预定字长,获得数据字序列;
将所述数据字序列划分为至少一个子序列,其中,每一所述子序列包括多个数据字;
对所述数据字序列执行如下的多轮迭代:
for i=0to nb-1;
S ← S ⊕ FI ( p 16 i , p 16 i + 1 , p 16 i + 2 , . . . , p 16 i + 15 ) ;
S←R(S);
其中,i+1为迭代轮数,nb为所述数据字序列包含的子序列的个数,S为每一轮迭代中各个所述子序列的中间值,S的初始值为0,{p16i,p16i+1,p16i+2,…,p16i +15}为第i+1个子序列;FI为注入函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;R(S)为轮函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为一个循环序列,采用基于非线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行非线性反馈变换;对所述子序列包含的数据字,进行按位步进的循环移位变换;再将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;
根据变换后获得的中间值S提取部分数据字,组成数据散列值。
2.如权利要求1所述的数据散列获取方法,其特征在于,所述将待处理数据序列进行数据填充至预定字长,获得数据字序列的步骤包括:
如果所述待处理数据序列的数据长度等于16个数据字的整数倍,则直接获取所述待处理数据序列为所述数据字序列;
否则,将待处理数据序列进行数据填充至16个数据字的整数倍,获取数据填充后得到的数据序列为所述数据字序列。
3.如权利要求2所述的数据散列获取方法,其特征在于,将所述数据字序列划分为至少一个子序列的步骤中,划分的每个所述子序列包含16个数据字。
4.如权利要求3所述的数据散列获取方法,其特征在于,每个所述数据字为32位的数据字。
5.如权利要求4所述的数据散列获取方法,其特征在于,将所述子序列作为一个循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换的步骤包括:
将该子序列作为长度为16个数据字的循环序列,采用基于线性反馈变换的附加式发生器:xi=xi-11+xi-13+xi-14+xi-16,按字步进地对所述子序列中的每个数据字执行线性反馈处理。
6.如权利要求5所述的数据散列获取方法,其特征在于,将所述子序列作为一个循环序列,采用基于非线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行非线性反馈变换的步骤包括:
将该子序列作为长度为16个数据字的循环序列,采用基于非线性反馈变换的附加式发生器:
Figure FDA0000392929430000021
按字步进地对所述子序列中的每个数据字执行所述非线性反馈处理。
7.如权利要求6所述的数据散列获取方法,其特征在于,对所述子序列包含的数据字,进行按位步进的循环移位变换的步骤包括:
对所述子序列中每一个数据字,按照以下移位变换公式:xi=xi>>>((i+1)(i+2)/2mod32),进行按位步进的循环移位变换。
8.如权利要求1至7中任意一项所述的数据散列获取方法,其特征在于,根据变换后获得的中间值S提取部分数据字,组成数据散列值之前,进一步包括以下数据混淆的步骤:
采用所述轮函数R对所述中间值S进一步进行多轮变换:
for i=0to N,其中N≤nb-1:
S←R(S)。
9.如权利要求8所述的数据散列获取方法,其特征在于,根据变换后获得的中间值S提取部分数据字,组成数据散列值的步骤包括:
采用所述轮函数R对执行数据混淆之后的所述中间值S进一步进行多轮变换:
for i=0to n,其中n≤nb-1:
S←R(S);
取每一轮的中间值S的第1个数据字组成所述数据散列值序列。
10.一种数据散列获取系统,其特征在于,包括:
数据填充模块,用于将待处理数据序列进行数据填充至预定字长,获得数据字序列;
数据划分模块,用于将所述数据字序列划分为至少一个子序列,其中,每一所述子序列包括多个数据字;
数据注入模块,用于对所述数据字序列执行如下的多轮迭代:
for i=0to nb-1;
S ← S ⊕ FI ( p 16 i , p 16 i + 1 , p 16 i + 2 , . . . , p 16 i + 15 ) ;
S←R(S);
其中,i+1为迭代轮数,nb为所述数据字序列包含的子序列的个数,S为每一轮迭代中各个所述子序列的中间值,S的初始值为0,{p16i,p16i+1,p16i+2,…,p16i +15}为第i+1个子序列;FI为注入函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;R(S)为轮函数,用于对所述第i+1个子序列执行以下操作:将所述子序列作为一个循环序列,采用基于非线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行非线性反馈变换;对所述子序列包含的数据字,进行按位步进的循环移位变换;再将所述子序列作为循环序列,采用基于线性反馈变换的附加式发生器,按字步进地对其中的每个数据字执行线性反馈变换;
输出模块,用于根据变换后获得的中间值S提取部分数据字,组成数据散列值。
CN201310467782.5A 2013-10-09 2013-10-09 数据散列获取方法及其系统 Active CN103559458B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310467782.5A CN103559458B (zh) 2013-10-09 2013-10-09 数据散列获取方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310467782.5A CN103559458B (zh) 2013-10-09 2013-10-09 数据散列获取方法及其系统

Publications (2)

Publication Number Publication Date
CN103559458A true CN103559458A (zh) 2014-02-05
CN103559458B CN103559458B (zh) 2016-08-17

Family

ID=50013702

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310467782.5A Active CN103559458B (zh) 2013-10-09 2013-10-09 数据散列获取方法及其系统

Country Status (1)

Country Link
CN (1) CN103559458B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105897404A (zh) * 2016-05-30 2016-08-24 广东财经大学 一种基于延迟发生器的散列方法
CN106464484A (zh) * 2014-03-31 2017-02-22 爱迪德技术有限公司 预定函数的混淆执行
CN107124265A (zh) * 2017-04-28 2017-09-01 淮安纷云软件有限公司 一种基于Hash散列表的身份认证方法
CN107563223A (zh) * 2017-09-12 2018-01-09 四川阵风科技有限公司 信息处理方法、装置及电子设备
CN108476198A (zh) * 2015-07-21 2018-08-31 巴弗尔公司 用于在不受信任的计算机上执行私人程序的系统和处理器
CN110348246A (zh) * 2018-04-08 2019-10-18 腾讯科技(深圳)有限公司 一种验证信息的生成方法、装置、终端设备和介质
CN116186746A (zh) * 2023-04-27 2023-05-30 暗链科技(深圳)有限公司 并行哈希加密方法、存储介质及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101202618A (zh) * 2006-12-12 2008-06-18 索尼(中国)有限公司 利用环迭代结构生成消息摘要的方法和装置
CN102412961A (zh) * 2010-09-19 2012-04-11 联芯科技有限公司 生成消息摘要的方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101202618A (zh) * 2006-12-12 2008-06-18 索尼(中国)有限公司 利用环迭代结构生成消息摘要的方法和装置
CN102412961A (zh) * 2010-09-19 2012-04-11 联芯科技有限公司 生成消息摘要的方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
沈勇: "《F4上的σ-线性反馈移位寄存器》", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, 15 June 2005 (2005-06-15), pages 137 - 24 *
胡治孝: "《基于扰动的混沌序列密码的研究与实现》", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, 15 March 2012 (2012-03-15), pages 138 - 116 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106464484A (zh) * 2014-03-31 2017-02-22 爱迪德技术有限公司 预定函数的混淆执行
CN106464484B (zh) * 2014-03-31 2019-08-09 爱迪德技术有限公司 预定函数的混淆执行
US10944545B2 (en) 2014-03-31 2021-03-09 Irdeto B.V. Obfuscated performance of a predetermined function
CN108476198B (zh) * 2015-07-21 2020-09-22 巴弗尔公司 用于执行计算机程序的方法和系统
CN108476198A (zh) * 2015-07-21 2018-08-31 巴弗尔公司 用于在不受信任的计算机上执行私人程序的系统和处理器
US10652216B2 (en) 2015-07-21 2020-05-12 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
CN105897404A (zh) * 2016-05-30 2016-08-24 广东财经大学 一种基于延迟发生器的散列方法
CN107124265A (zh) * 2017-04-28 2017-09-01 淮安纷云软件有限公司 一种基于Hash散列表的身份认证方法
CN107563223A (zh) * 2017-09-12 2018-01-09 四川阵风科技有限公司 信息处理方法、装置及电子设备
CN110348246A (zh) * 2018-04-08 2019-10-18 腾讯科技(深圳)有限公司 一种验证信息的生成方法、装置、终端设备和介质
CN110348246B (zh) * 2018-04-08 2022-08-30 腾讯科技(深圳)有限公司 一种验证信息的生成方法、装置、终端设备和介质
CN116186746A (zh) * 2023-04-27 2023-05-30 暗链科技(深圳)有限公司 并行哈希加密方法、存储介质及电子设备
CN116186746B (zh) * 2023-04-27 2023-07-14 暗链科技(深圳)有限公司 并行哈希加密方法、存储介质及电子设备

Also Published As

Publication number Publication date
CN103559458B (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
CN103559458A (zh) 数据散列获取方法及其系统
US10686589B2 (en) Combining hashes of data blocks
JP5156540B2 (ja) ハッシュ値生成装置
CN111492615B (zh) 具有可更新共享矩阵的加密设备
CN108964872B (zh) 一种基于aes的加密方法及装置
CN104253684A (zh) 加密方法和加密装置
CN110071794B (zh) 一种基于aes算法的信息加密方法、系统及相关组件
US8953784B2 (en) Lightweight stream cipher cryptosystems
CN112202547B (zh) 一种轻量级分组密码gfcs实现方法、装置及可读存储介质
DE102019108095A1 (de) Ausführen einer kryptografischen Operation
CN103019648A (zh) 一种带有数字后处理电路的真随机数发生器
CN116488794B (zh) 基于fpga的高速sm4密码模组实现方法及装置
Smart et al. Hash functions, message authentication codes and key derivation functions
US20150131795A1 (en) Cryptographic hash generation system
CN103152058A (zh) 基于ldpc-bch网格的低码率编码方法
CN103326861B (zh) 一种对数据进行rsa安全签名的方法、装置及安全芯片
CN111478766B (zh) 一种分组密码meg实现方法、装置及存储介质
CN103490876A (zh) 基于超混沌Lorenz系统构建Hash函数的数据加密方法
CN114826560B (zh) 一种轻量级分组密码cref实现方法及系统
CN106059748B (zh) 一种基于块安全再生码的轻量级数据安全存储方法
WO2019029745A1 (zh) 一种编码方法、译码方法、装置和设备
CN101702646B (zh) 一种数据加密方法
CN103986718A (zh) 一种提高hdfs文件传输安全性和读取效率的方法
CN110287716B (zh) 数据存储方法及装置
CN110071927B (zh) 一种信息加密方法、系统及相关组件

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant