CN106650240A - 并行哈希函数的构造方法 - Google Patents
并行哈希函数的构造方法 Download PDFInfo
- Publication number
- CN106650240A CN106650240A CN201611051964.4A CN201611051964A CN106650240A CN 106650240 A CN106650240 A CN 106650240A CN 201611051964 A CN201611051964 A CN 201611051964A CN 106650240 A CN106650240 A CN 106650240A
- Authority
- CN
- China
- Prior art keywords
- function
- calculation
- result
- value
- register
- 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
Links
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16Z—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS, NOT OTHERWISE PROVIDED FOR
- G16Z99/00—Subject matter not provided for in other main groups of this subclass
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种并行哈希函数的构造方法,所述构造方法包括以下步骤:对给定值进行填充得到填充给定值,并将所述填充给定值进行划分得到多个初始消息块;对多个初始消息块进行预设的函数处理得到对应的多个块哈希值;判断当前轮数的序列号为奇数或偶数,其中,当当前轮数的序列号为奇数时,相邻两个块哈希值进行异或运算得到一个异或运算值,并将所述异或运算值缓存在8个寄存器中,当当前轮数的序列号为偶数时,相邻两个块哈希值进行合并交换运算得到一个合并运算,并将所述合并运算值缓存在8个寄存器中;直到根据多个块哈希值得到最终的异或运算值或最终的合并运算值;根据最终的异或运算值或最终的合并运算值得到哈希值。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种并行哈希函数的构造方法。
背景技术
现有的哈希函数消息运算过程中重复使用一压缩函数f,如图1所示,函数f的输入有两项,一项是上一轮(第i-1轮)的输出CVi-1,也即是链接变量,另一项则是本轮(第i轮)输入的消息块Yi。因此只有上一个消息块的值计算结束之后才能计算下一个消息块的值,这就增加了计算时间。当消息足够长时,运算速率不可避免的会很低,使得运算的效率降低。
发明内容
本发明旨在解决现有技术中哈希函数运算效率较低的技术问题,提供一种并行哈希函数的构造方法。
本发明的实施例提供一种并行哈希函数的构造方法,所述构造方法包括以下步骤:
对给定值进行填充得到填充给定值,并将所述填充给定值进行划分得到多个初始消息块;
对多个初始消息块进行预设的函数处理得到对应的多个块哈希值;
判断当前轮数的序列号为奇数或偶数,其中,当当前轮数的序列号为奇数时,相邻两个块哈希值进行异或运算得到一个异或运算值,并将所述异或运算值缓存在8个寄存器中,当当前轮数的序列号为偶数时,相邻两个块哈希值进行合并交换运算得到一个合并运算,并将所述合并运算值缓存在8个寄存器中;
直到根据多个块哈希值得到最终的异或运算值或最终的合并运算值;
根据最终的异或运算值或最终的合并运算值得到哈希值。
本发明的技术方案与现有技术相比,有益效果在于:每个块哈希值在计算时不受其他消息块值的影响,不需要等待其他消息块值的运算结果来进行运算,即在每轮计算中,多个消息块可以同时被处理,因此可以提高运算效率,节省运算时间。
附图说明
图1是现有技术中哈希函数的运算示意图;
图2是本发明并行哈希函数的构造方法一种实施例的流程示意图;
图3是本发明并行哈希函数一种实施例的结构示意图;
图4是本发明并行哈希函数的构造方法中初始链接变量值的处理方法一种实施例的流程示意图;
图5是本发明并行哈希函数的构造方法中初始链接变量值的处理方法另一种实施例的流程示意图;
图6是本发明并行哈希函数的仿真结果示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
本发明一个实施例的并行哈希函数的构造方法,如图2所示,所述构造方法包括以下步骤:
步骤S201,对给定值进行填充得到填充给定值,并将所述填充给定值进行划分得到多个初始消息块;
步骤S202,对多个初始消息块进行预设的函数处理得到对应的多个块哈希值;
步骤S203,判断当前轮数的序列号为奇数或偶数,其中,当当前轮数的序列号为奇数时,进入步骤S204,当当前轮数的序列号为偶数时,进入步骤S205;
步骤S204,相邻两个块哈希值进行异或运算得到一个异或运算值,并将所述异或运算值缓存在8个寄存器中;
步骤S205,相邻两个块哈希值进行合并交换运算得到一个合并运算,并将所述合并运算值缓存在8个寄存器中;
步骤S206,直到根据多个块哈希值得到最终的异或运算值或最终的合并运算值;
步骤S207,根据最终的异或运算值或最终的合并运算值得到哈希值。
在具体实施中,所述对给定值进行填充得到填充给定值具体为:
在给定值的后面加入一个常数1和多个常数0;
加入给定值的长度值,得到长度为512倍数的填充给定值。
在具体实施中,所述将所述填充给定值进行划分得到多个初始消息块的步骤,具体为:
按照512比特,将所述填充给定值进行划分得到多个初始消息块
在具体实施中,所述预设的函数具体为:压缩函数f。
在具体实施中,当当前轮数的序列号为奇数时,相邻两个块哈希值进行异或运算得到一个异或运算值,具体为:
当当前轮数的序列号为奇数时,在最后一个块哈希值之后增加一个块哈希值;
相邻两个块哈希值进行异或运算得到一个异或运算值,其中,增加的块哈希值与最后一个块哈希值相同。
在具体实施中,图3是本发明一个实施例并行哈希函数的结构示意图。首先把给定的消息M进行填充,使得填充后的长度是512的倍数。填充的规则是在消息后加入一个1和若干个0,在最后再加入消息的长度。填充之后的消息被分成若干个512比特的消息块Y0,Y1,…,YL-1。我们先各自计算每一个消息块的值并把它们的值记录下来表示为块哈希值。
在接下来的每一轮里,每两个相邻的消息块的值被一起进行运算。当每一轮里消息块的个数是奇数时,我们添加一个块哈希值,该块哈希值和本轮最后一个消息块的值是相同的。在这个阶段,使用256比特长的缓冲区以存储中间结果和最后的哈希值,缓冲区可表示为8个32比特长的寄存器A,B,C,D,E,F,G,H。
假设i是轮数的序列号,当imod2=1(i=1,2,...)时,让该轮里相邻的两个消息块进行异或运算,获得的值分别存放在八个寄存器A,B,C,D,E,F,G,H中。比如在第一轮中,Y0对应的消息块值和Y1对应的消息块值进行异或运算得到运算值h1,Y2对应的消息块值和Y2对应的消息块值进行异或运算得到运算值h2,在第一轮中,最后一个Yi对应的消息块值没有可以进行运算的对象,因此增加一个Yi对应的消息块值与最后一个Yi对应的消息块值进行异或运算。当imod2=0(i=1,2,...)时,我们把这两个消息块中前一个消息块的E,F,G,H中的值依次赋给新的寄存器A,B,C,D,把后一个消息块的A,B,C,D中的值依次赋给新的寄存器E,F,G,H,这样就得到新的值。比如相邻两个消息块需要合并,记第一消息块为MB1和第二消息块MB2。第一消息块MB1需要ABCDEFGH八个寄存器存放,第二消息块MB2也需要ABCDEFGH八个寄存器存放。当imod2=0时,第一消息块为MB1和第二消息块MB2的合并结果记为NMB。其中,NMB的ABCD四个寄存器存放第一消息块MB1的EFGH四个寄存器的值,NMB的四个寄存器EFGH存放第二消息块MB2的ABCD四个寄存器的值。
根据本发明中并行哈希函数的构造方法,每个块哈希值在计算时不受其他消息块值的影响,不需要等待其他消息块值的运算结果来进行运算,即在每轮计算中,多个消息块可以同时被处理,因此可以提高运算效率,节省运算时间。
在具体实施中,由于现有哈希函数的初始链接变量值是常量,这就使得攻击者可以采用穷举攻击的方法找到碰撞,使得哈希函数变得不安全,通过对初始链接变量值进行处理改进,可以增强哈希函数的不可确定性和不可预测性。本发明还提供一种实施例的并行哈希函数的构造方法,如图4所述,在步骤S203之前以下步骤:
步骤S401,将多个块哈希值一一对应存放在对应的8个寄存器中;
步骤S402,在每个块哈希值对应的8个寄存器中进行第一次计算,根据函数f1,f2,σ1,σ2对每相邻两个寄存器中的值进行结合运算,得到第一次结合运算结果;
步骤S403,进行第二次计算,根据函数f3,f4,σ3,σ4和第一轮结合运算结果对第一寄存器中的值和第四寄存器中的值、第二寄存器中的值和第三寄存器中的值、第五寄存器中的值和第八寄存器中的值以及第六寄存器中的值和第七寄存器中的值分别进行结合运算,得到第二次结合运算结果;
步骤S404,进行第三次计算,根据函数f5,f6,σ5,σ6和第二次结合运算结果对第一寄存器中的值和第六寄存器中的值、第二寄存器中的值和第五寄存器中的值、第三寄存器中的值和第八寄存器中的值以及第四寄存器中的值和第七寄存器中的值分别进行结合运算,得到每个块哈希值对应的8个寄存器中的更新值。
也就是说,上述步骤具体为图3中block hash的细化步骤,在当i=1时,先对初始链接变量值进行处理改进之后,再根据每相邻两个块哈希值对应的8个寄存器中的更新值进行异或运算。
在具体实施中,步骤S402具体为:
根据函数σ1对第一寄存器A中的值进行运算得到函数σ1的第一计算结果,并将函数σ1的第一计算结果输出至函数f1和函数f2中;
根据函数f1对第二寄存器B中的值、函数σ1的第一计算结果和第一预设值n1进行运算得到函数f1的第一计算结果,并将函数f1的第一计算结果输出至函数σ2中;
根据函数σ2对函数f1的第一计算结果进行运算得到函数σ2的第一计算结果并更新至第二寄存器B,并将函数σ2的第一计算结果输出至函数f2和第二次计算中;
根据函数f2对函数σ1的第一计算结果、函数σ2的第一计算结果和第二预设值n2进行运算得到函数f2的第一计算结果更新至第一寄存器A,并将函数f2的第一计算结果输出至第二次计算中;
根据函数σ1对第三寄存器C中的值进行运算得到函数σ1的第二计算结果,并函数σ1的第二计算结果输出至函数f1和函数f2中;
根据函数f1对第四寄存器D中的值、函数σ1的第二计算结果和第一预设值n1进行运算得到函数f1的第二计算结果,并将函数f1的第一计算结果输出至函数σ2中;
根据函数σ2对函数f1的第二计算结果进行运算得到函数σ2的第二计算结果更新至第四寄存器D,并将函数σ2的第二计算结果输出至函数f2和第二次计算中;
根据函数f2对函数σ1的第二计算结果、函数σ2的第二计算结果和第二预设值n2进行运算得到函数f2的第二计算结果更新至第三寄存器C,并将函数f2的第二计算结果输出至第二次计算中;
根据函数σ1对第五寄存器E中的值进行运算得到函数σ1的第三计算结果,并将函数σ1的第三计算结果输出至函数f1和函数f2中;
根据函数f1对第六寄存器F中的值、函数σ1的第三计算结果和第一预设值n1进行运算得到函数f1的第三计算结果,并将函数f1的第三计算结果输出至函数σ2中;
根据函数σ2对函数f1的第三计算结果进行运算得到函数σ2的第三计算结果更新至第六寄存器F,并将函数σ2的第三计算结果输出至函数f2和第二次计算中;
根据函数f2对函数σ1的第三计算结果、函数σ2的第三计算结果和第二预设值n2进行运算得到函数f2的第三计算结果更新至第五寄存器E,并将函数f2的第三计算结果输出至第二次计算中;
根据函数σ1对第七寄存器G中的值进行运算得到函数σ1的第四计算结果,并将函数σ1的第四计算结果输出至函数f1和函数f2中;
根据函数f1对第八寄存器H中的值、函数σ1的第四计算结果和第一预设值n1进行运算得到函数f1的第四计算结果,并将函数f1的第四计算结果输出至函数σ2中;
根据函数σ2对函数f1的第四计算结果进行运算得到函数σ2的第四计算结果更新至第八寄存器H,并将函数σ2的第四计算结果输出至函数f2和第二次计算中;
根据函数f2对函数σ1的第四计算结果、函数σ2的第四计算结果和第二预设值n2进行运算得到函数f2的第四计算结果更新至第七寄存器G,并将函数f2的第四计算结果输出至第二次计算中。
在具体实施中,步骤S403具体为:
根据函数σ3对函数f2的第一计算结果进行运算得到函数σ3的第一计算结果,并将函数σ3的第一计算结果输出至函数f3和函数f4中;
根据函数σ3对函数f2的第二计算结果进行运算得到函数σ3的第二计算结果,并将函数σ3的第二计算结果输出至函数f3和函数f4中;
根据函数f3对函数σ2的第一计算结果、函数σ3的第二计算结果和第三预设值n3进行运算得到函数f3的第一计算结果,并将函数f3的第一计算结果输出至函数σ4中;
根据函数σ4对函数f3的第一计算结果进行运算得到函数σ4的第一计算结果更新至第二寄存器B,并将函数σ4的第一计算结果输出至函数f4和第三次运算中;
根据函数f4对函数σ4的第一计算结果、函数σ3的第二计算结果和第四预设值n4进行运算得到函数f4的第一计算结果更新至第三寄存器C,并将函数f4的第一计算结果输出至第三次运算中;
根据函数f3对函数σ3的第一计算结果、函数σ2的第二计算结果和第三预设值n3进行运算得到函数f3的第二计算结果,并将函数f3的第二计算结果输出至函数σ4中;
根据函数σ4对函数f3的第二计算结果进行运算得到函数σ4的第二计算结果更新至第四寄存器D,并将函数σ4的第二计算结果输出至函数f4;
根据函数f4对函数σ4的第二计算结果、函数σ3的第一计算结果和第四预设值n4进行运算得到函数f4的第二计算结果更新至第一寄存器A,并将函数f4的第二计算结果输出至第三次运算中;
根据函数σ3对函数f2的第三计算结果进行运算得到函数σ3的第三计算结果,并将函数σ3的第三计算结果输出至函数f3和函数f4中;
根据函数σ3对函数f2的第四计算结果进行运算得到函数σ3的第四计算结果,并将函数σ3的第四计算结果输出至函数f3和函数f4中;
根据函数f3对函数σ2的第三计算结果、函数σ3的第四计算结果和第三预设值n3进行运算得到函数f3的第三计算结果,并将函数f3的第三计算结果输出至函数σ4中;
根据函数σ4对函数f3的第三计算结果进行运算得到函数σ4的第三计算结果更新至第六寄存器F,并将函数σ4的第三计算结果输出至函数f4和第三次运算中;
根据函数f4对函数σ4的第三计算结果、函数σ3的第四计算结果和第四预设值n4进行运算得到函数f4的第三计算结果更新至第七寄存器G,并将函数f4的第三计算结果输出至第三次运算中;
根据函数f3对函数σ3的第三计算结果、函数σ2的第四计算结果和第三预设值n3进行运算得到函数f3的第四计算结果,并将函数f3的第四计算结果输出至函数σ4中;
根据函数σ4对函数f3的第四计算结果进行运算得到函数σ4的第四计算结果更新至第八寄存器H,并将函数σ4的第四计算结果输出至函数f4;
根据函数f4对函数σ4的第四计算结果、函数σ3的第三计算结果和第四预设值n4进行运算得到函数f4的第四计算结果更新至第五寄存器E,并将函数f4的第四计算结果输出至第三次运算中。
在具体实施中,步骤S404具体为:
根据函数σ5对函数f4的第二计算结果进行运算得到函数σ5的第一计算结果,并将函数σ5的第一计算结果输出至函数f5和函数f6中;
根据函数f5对函数σ5的第一计算结果、函数σ4的第三计算结果和第五预设值n5进行运算得到函数f5的第一计算结果,并将函数f5的第一计算结果输出至函数σ6中;
根据函数σ6对函数f5的第一计算结果进行运算得到函数σ6的第一计算结果更新至第六寄存器F,并将函数σ6的第一计算结果输出至函数f6中;
根据函数f6对函数σ6的第一计算结果、函数σ5的第一计算结果和第六预设值n6进行运算得到函数f6的第一计算结果更新至第一寄存器A中;
根据函数σ5对函数f4的第四计算结果进行运算得到函数σ5的第二计算结果,并将函数σ5的第二计算结果输出至函数f5和函数f6中;
根据函数f5对函数σ5的第二计算结果、函数σ4的第一计算结果和第五预设值n5进行运算得到函数f5的第二计算结果,并将函数f5的第二计算结果输出至函数σ6中;
根据函数σ6对函数f5的第二计算结果进行运算得到函数σ6的第二计算结果更新至第二寄存器B,并将函数σ6的第二计算结果输出至函数f6中;
根据函数f6对函数σ6的第二计算结果、函数σ5的第二计算结果和第六预设值n6进行运算得到函数f6的第二计算结果更新至第五寄存器E中;
根据函数σ5对函数f4的第一计算结果进行运算得到函数σ5的第三计算结果,并将函数σ5的第三计算结果输出至函数f5和函数f6中;
根据函数f5对函数σ5的第三计算结果、函数σ4的第四计算结果和第五预设值n5进行运算得到函数f5的第三计算结果,并将函数f5的第三计算结果输出至函数σ6中;
根据函数σ6对函数f5的第三计算结果进行运算得到函数σ6的第三计算结果更新至第八寄存器H中,并将函数σ6的第三计算结果输出至函数f6中;
根据函数f6对函数σ6的第三计算结果、函数σ5的第三计算结果和第六预设值n6进行运算得到函数f6的第三计算结果更新至第三寄存器C中;
根据函数σ5对函数f4的第三计算结果进行运算得到函数σ5的第四计算结果,并将函数σ5的第四计算结果输出至函数f5和函数f6中;
根据函数f5对函数σ5的第四计算结果、函数σ4的第二计算结果和第五预设值n5进行运算得到函数f5的第四计算结果,并将函数f5的第四计算结果输出至函数σ6中;
根据函数σ6对函数f5的第四计算结果进行运算得到函数σ6的第四计算结果更新至第四寄存器中,并将函数σ6的第四计算结果输出至函数f6中;
根据函数f6对函数σ6的第四计算结果、函数σ5的第四计算结果和第六预设值n6进行运算得到函数f6的第四计算结果更新至第七寄存器G中。
在具体实施中,如图5所示,在初始链接变量值的处理过程中,采用一个32比特输入xi的函数σi和有三个32比特的输入ki,mi,ni的函数fi,i=1,2,...,6。表示把xi循环右移si位。在不同轮选择了不同的si值。σi和fi的计算公式如下所示:
其中,x1,x2,x3,x4,x5,x6为输入值,ki表示函数σi的输出,mi表述函数σi-1的输出,当i=1时,σ0是寄存器中的值。
原先已知的初始值存放在寄存器A,B,C,D,E,F,G,H中,这些值将经过三轮处理来获得更新后的初始值。在第一轮中,相邻寄存器中的值通过函数f1,f2,σ1,σ2进行运算,也即是A和B进行结合运算,C和D进行运算,E和F进行运算,G和H进行结合运算,得到新的值。接下来两轮中值的计算方法和第一轮中是类似的,只是采用的函数和值结合的次序不同。第二轮中,采用的函数是f3,f4,σ3,σ4,前四个值中,A和D,B和C分别进行进行结合运算,后四个值中,E和H,F和G分别进行结合运算。在第三轮中,函数f5,f6,σ5,σ6被采用,其中A和F进行结合运算,B和E进行运算,C和H进行运算,D和G进行运算。经过这三轮运算,最终得出更新后初始值。对于任意函数fi有三个输入,其中一个输入ki来自函数σi的输出,另一个输入mi来自函数σi-1的输出,最后一个输入ni的值是常数,在不同轮的取值情况分别列在表一和表二中。在表一中,n1的值分别取自SHA256(t)(t=0,1,2,3)得到的哈希值的前32比特,n2的值来源于t(t=2,3,5,7)的平方根的十进制部分的二进制表示的前32位。通过表二可以看出,对于n3,n4,n5,n6,同样的值被使用。
表一
第一轮 | A&B | C&D | E&F | G&H |
n1的值 | 5feceb66 | 6b86b273 | d4735e3a | 4e074085 |
n2的值 | 428a2f98 | 71374491 | b5c0fbcf | e9b5dba5 |
表二
第二轮 | B&C | A&D | F&G | E&H |
第三轮 | B&E | A&F | D&G | C&H |
n3,n5的值 | 71374491 | 6b86b273 | e9b5dba5 | 4e074085 |
n4,n6的值 | 5feceb66 | 428a2f98 | d4735e3a | b5c0fbcf |
通过把最终得到的值作为新的初始链接变量值。通过对于初始值的改进,增强了函数的不可确定性和不可预测性。
在具体实施中,测试哈希值对初始链接变量的敏感性,即为了评估初始值改变对于最终哈希值的影响,任意选择了一个文本“Hash function is one of the major toolsin cryptography,which is usually used for data integrity in conjunction withdigital signature schemes.”并对其在六种不同的情况下进行测试。
情形1:计算这个给定的消息的哈希值;
情形2:第一个字符‘H’换成‘A’;
情形3:把单词“data”变成“date”;
情形4:句子末尾的句号换成分号;
情形5:把句子中的第二个单词“function”改成“Function”;
情形6:在单词“Hash”之前添加一个数字6。
得出的相对应的哈希值用十六进制表示如下:
情形1:
107CC9225AD8BB6D15D51992C3AE6386321F150D5320716C71F9BF7C47783920;
情形2:
B81788A2CF98DE7AD4CB770459046C9104E7F46953563302FEFDA941A46C1D08;
情形3:
8AC84B4DAD82294541B27C1207C0D90ACF9CD89A541871AC9BFA6D2A9E7A2849;
情形4:
63DFE552EDACCB56E73225BE335FBE7FD4947C2BEE2697DF0D5346A422001A38;
情形5:
5BC213F16560D60784E6815039E9677C80F5129EA7D5920AE57A70B30D93ADB0;
情形6:
AB20F763C0E7093C10011597572D0E828118662FA28C57E0A8DE4C651D051CC0。
如图6所示,得出的不同情况下的测试值即仿真结果。根据仿真结果可以看出,不管消息有多么极小的改变,哈希值都将会有很大的变化。结果表明并行哈希函数的敏感性很好。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种并行哈希函数的构造方法,其特征在于:所述构造方法包括以下步骤:
对给定值进行填充得到填充给定值,并将所述填充给定值进行划分得到多个初始消息块;
对多个初始消息块进行预设的函数处理得到对应的多个块哈希值;
判断当前轮数的序列号为奇数或偶数,其中,当当前轮数的序列号为奇数时,相邻两个块哈希值进行异或运算得到一个异或运算值,并将所述异或运算值缓存在8个寄存器中,当当前轮数的序列号为偶数时,相邻两个块哈希值进行合并交换运算得到一个合并运算,并将所述合并运算值缓存在8个寄存器中;
直到根据多个块哈希值得到最终的异或运算值或最终的合并运算值;
根据最终的异或运算值或最终的合并运算值得到哈希值。
2.如权利要求1所述的构造方法,其特征在于:所述对给定值进行填充的步骤,具体为:
在给定值的后面加入一个常数1和多个常数0;
加入给定值的长度值,得到长度为512倍数的填充给定值。
3.如权利要求2所述的构造方法,其特征在于:所述将所述填充给定值进行划分得到多个初始消息块的步骤,具体为:
按照512比特,将所述填充给定值进行划分得到多个初始消息块。
4.如权利要求1-3任意一项所述的构造方法,其特征在于:当当前轮数的序列号为奇数时,相邻两个块哈希值进行异或运算得到一个异或运算值,具体为:
当当前轮数的序列号为奇数时,在最后一个块哈希值之后增加一个块哈希值;
相邻两个块哈希值进行异或运算得到一个异或运算值。
5.如权利要求4所述的构造方法,其特征在于:增加的块哈希值与最后一个块哈希值相同。
6.如权利要求1所述的构造方法,其特征在于:在判断当前轮数的序列号为奇数或偶数之前,还包括以下步骤:
将多个块哈希值一一对应存放在对应的8个寄存器中;
在每个块哈希值对应的8个寄存器中进行第一次计算,根据函数f1,f2,σ1,σ2对每相邻两个寄存器中的值进行结合运算,得到第一次结合运算结果;
进行第二次计算,根据函数f3,f4,σ3,σ4和第一轮结合运算结果对第一寄存器中的值和第四寄存器中的值、第二寄存器中的值和第三寄存器中的值、第五寄存器中的值和第八寄存器中的值以及第六寄存器中的值和第七寄存器中的值分别进行结合运算,得到第二次结合运算结果;
进行第三次计算,根据函数f5,f6,σ5,σ6和第二次结合运算结果对第一寄存器中的值和第六寄存器中的值、第二寄存器中的值和第五寄存器中的值、第三寄存器中的值和第八寄存器中的值以及第四寄存器中的值和第七寄存器中的值分别进行结合运算,得到每个块哈希值对应的8个寄存器中的更新值。
7.如权利要求6所述的构造方法,其特征在于:所述根据函数f1,f2,σ1,σ2对每相邻两个寄存器中的值进行结合运算,得到第一次结合运算结果,具体为:
根据函数σ1对第一寄存器中的值进行运算得到函数σ1的第一计算结果,并将函数σ1的第一计算结果输出至函数f1和函数f2中;
根据函数f1对第二寄存器中的值、函数σ1的第一计算结果和第一预设值n1进行运算得到函数f1的第一计算结果,并将函数f1的第一计算结果输出至函数σ2中;
根据函数σ2对函数f1的第一计算结果进行运算得到函数σ2的第一计算结果并更新至第二寄存器,并将函数σ2的第一计算结果输出至函数f2和第二次计算中;
根据函数f2对函数σ1的第一计算结果、函数σ2的第一计算结果和第二预设值n2进行运算得到函数f2的第一计算结果更新至第一寄存器,并将函数f2的第一计算结果输出至第二次计算中;
根据函数σ1对第三寄存器中的值进行运算得到函数σ1的第二计算结果,并函数σ1的第二计算结果输出至函数f1和函数f2中;
根据函数f1对第四寄存器中的值、函数σ1的第二计算结果和第一预设值n1进行运算得到函数f1的第二计算结果,并将函数f1的第一计算结果输出至函数σ2中;
根据函数σ2对函数f1的第二计算结果进行运算得到函数σ2的第二计算结果更新至第四寄存器,并将函数σ2的第二计算结果输出至函数f2和第二次计算中;
根据函数f2对函数σ1的第二计算结果、函数σ2的第二计算结果和第二预设值n2进行运算得到函数f2的第二计算结果更新至第三寄存器,并将函数f2的第二计算结果输出至第二次计算中;
根据函数σ1对第五寄存器中的值进行运算得到函数σ1的第三计算结果,并将函数σ1的第三计算结果输出至函数f1和函数f2中;
根据函数f1对第六寄存器中的值、函数σ1的第三计算结果和第一预设值n1进行运算得到函数f1的第三计算结果,并将函数f1的第三计算结果输出至函数σ2中;
根据函数σ2对函数f1的第三计算结果进行运算得到函数σ2的第三计算结果更新至第六寄存器,并将函数σ2的第三计算结果输出至函数f2和第二次计算中;
根据函数f2对函数σ1的第三计算结果、函数σ2的第三计算结果和第二预设值n2进行运算得到函数f2的第三计算结果更新至第五寄存器,并将函数f2的第三计算结果输出至第二次计算中;
根据函数σ1对第七寄存器中的值进行运算得到函数σ1的第四计算结果,并将函数σ1的第四计算结果输出至函数f1和函数f2中;
根据函数f1对第八寄存器中的值、函数σ1的第四计算结果和第一预设值n1进行运算得到函数f1的第四计算结果,并将函数f1的第四计算结果输出至函数σ2中;
根据函数σ2对函数f1的第四计算结果进行运算得到函数σ2的第四计算结果更新至第八寄存器,并将函数σ2的第四计算结果输出至函数f2和第二次计算中;
根据函数f2对函数σ1的第四计算结果、函数σ2的第四计算结果和第二预设值n2进行运算得到函数f2的第四计算结果更新至第七寄存器,并将函数f2的第四计算结果输出至第二次计算中。
8.如权利要求6所述的构造方法,其特征在于:所述进行第二次计算,根据函数f3,f4,σ3,σ4和第一轮结合运算结果对第一寄存器中的值和第四寄存器中的值、第二寄存器中的值和第三寄存器中的值、第五寄存器中的值和第八寄存器中的值以及第六寄存器中的值和第七寄存器中的值分别进行结合运算,得到第二次结合运算结果的步骤,具体为:
根据函数σ3对函数f2的第一计算结果进行运算得到函数σ3的第一计算结果,并将函数σ3的第一计算结果输出至函数f3和函数f4中;
根据函数σ3对函数f2的第二计算结果进行运算得到函数σ3的第二计算结果,并将函数σ3的第二计算结果输出至函数f3和函数f4中;
根据函数f3对函数σ2的第一计算结果、函数σ3的第二计算结果和第三预设值n3进行运算得到函数f3的第一计算结果,并将函数f3的第一计算结果输出至函数σ4中;
根据函数σ4对函数f3的第一计算结果进行运算得到函数σ4的第一计算结果更新至第二寄存器,并将函数σ4的第一计算结果输出至函数f4和第三次运算中;
根据函数f4对函数σ4的第一计算结果、函数σ3的第二计算结果和第四预设值n4进行运算得到函数f4的第一计算结果更新至第三寄存器,并将函数f4的第一计算结果输出至第三次运算中;
根据函数f3对函数σ3的第一计算结果、函数σ2的第二计算结果和第三预设值n3进行运算得到函数f3的第二计算结果,并将函数f3的第二计算结果输出至函数σ4中;
根据函数σ4对函数f3的第二计算结果进行运算得到函数σ4的第二计算结果更新至第四寄存器,并将函数σ4的第二计算结果输出至函数f4;
根据函数f4对函数σ4的第二计算结果、函数σ3的第一计算结果和第四预设值n4进行运算得到函数f4的第二计算结果更新至第一寄存器,并将函数f4的第二计算结果输出至第三次运算中;
根据函数σ3对函数f2的第三计算结果进行运算得到函数σ3的第三计算结果,并将函数σ3的第三计算结果输出至函数f3和函数f4中;
根据函数σ3对函数f2的第四计算结果进行运算得到函数σ3的第四计算结果,并将函数σ3的第四计算结果输出至函数f3和函数f4中;
根据函数f3对函数σ2的第三计算结果、函数σ3的第四计算结果和第三预设值n3进行运算得到函数f3的第三计算结果,并将函数f3的第三计算结果输出至函数σ4中;
根据函数σ4对函数f3的第三计算结果进行运算得到函数σ4的第三计算结果更新至第六寄存器,并将函数σ4的第三计算结果输出至函数f4和第三次运算中;
根据函数f4对函数σ4的第三计算结果、函数σ3的第四计算结果和第四预设值n4进行运算得到函数f4的第三计算结果更新至第七寄存器,并将函数f4的第三计算结果输出至第三次运算中;
根据函数f3对函数σ3的第三计算结果、函数σ2的第四计算结果和第三预设值n3进行运算得到函数f3的第四计算结果,并将函数f3的第四计算结果输出至函数σ4中;
根据函数σ4对函数f3的第四计算结果进行运算得到函数σ4的第四计算结果更新至第八寄存器,并将函数σ4的第四计算结果输出至函数f4;
根据函数f4对函数σ4的第四计算结果、函数σ3的第三计算结果和第四预设值n4进行运算得到函数f4的第四计算结果更新至第五寄存器,并将函数f4的第四计算结果输出至第三次运算中。
9.如权利要求6所述的构造方法,其特征在于:所述进行第三次计算,根据函数f5,f6,σ5,σ6和第二次结合运算结果对第一寄存器中的值和第六寄存器中的值、第二寄存器中的值和第五寄存器中的值、第三寄存器中的值和第八寄存器中的值以及第四寄存器中的值和第七寄存器中的值分别进行结合运算,得到每个块哈希值对应的8个寄存器中的更新值的步骤,具体为:
根据函数σ5对函数f4的第二计算结果进行运算得到函数σ5的第一计算结果,并将函数σ5的第一计算结果输出至函数f5和函数f6中;
根据函数f5对函数σ5的第一计算结果、函数σ4的第三计算结果和第五预设值n5进行运算得到函数f5的第一计算结果,并将函数f5的第一计算结果输出至函数σ6中;
根据函数σ6对函数f5的第一计算结果进行运算得到函数σ6的第一计算结果更新至第六寄存器,并将函数σ6的第一计算结果输出至函数f6中;
根据函数f6对函数σ6的第一计算结果、函数σ5的第一计算结果和第六预设值n6进行运算得到函数f6的第一计算结果更新至第一寄存器中;
根据函数σ5对函数f4的第四计算结果进行运算得到函数σ5的第二计算结果,并将函数σ5的第二计算结果输出至函数f5和函数f6中;
根据函数f5对函数σ5的第二计算结果、函数σ4的第一计算结果和第五预设值n5进行运算得到函数f5的第二计算结果,并将函数f5的第二计算结果输出至函数σ6中;
根据函数σ6对函数f5的第二计算结果进行运算得到函数σ6的第二计算结果更新至第二寄存器,并将函数σ6的第二计算结果输出至函数f6中;
根据函数f6对函数σ6的第二计算结果、函数σ5的第二计算结果和第六预设值n6进行运算得到函数f6的第二计算结果更新至第五寄存器中;
根据函数σ5对函数f4的第一计算结果进行运算得到函数σ5的第三计算结果,并将函数σ5的第三计算结果输出至函数f5和函数f6中;
根据函数f5对函数σ5的第三计算结果、函数σ4的第四计算结果和第五预设值n5进行运算得到函数f5的第三计算结果,并将函数f5的第三计算结果输出至函数σ6中;
根据函数σ6对函数f5的第三计算结果进行运算得到函数σ6的第三计算结果更新至第八寄存器中,并将函数σ6的第三计算结果输出至函数f6中;
根据函数f6对函数σ6的第三计算结果、函数σ5的第三计算结果和第六预设值n6进行运算得到函数f6的第三计算结果更新至第三寄存器中;
根据函数σ5对函数f4的第三计算结果进行运算得到函数σ5的第四计算结果,并将函数σ5的第四计算结果输出至函数f5和函数f6中;
根据函数f5对函数σ5的第四计算结果、函数σ4的第二计算结果和第五预设值n5进行运算得到函数f5的第四计算结果,并将函数f5的第四计算结果输出至函数σ6中;
根据函数σ6对函数f5的第四计算结果进行运算得到函数σ6的第四计算结果更新至第四寄存器中,并将函数σ6的第四计算结果输出至函数f6中;
根据函数f6对函数σ6的第四计算结果、函数σ5的第四计算结果和第六预设值n6进行运算得到函数f6的第四计算结果更新至第七寄存器中。
10.如权利要求6所述的构造方法,其特征在于:函数σi和fi计算公式如下所示:
σ1=ROTR3(x1)⊕ROTR7(x1)⊕ROTR18(x1);
σ2=ROTR3(x2)⊕ROTR14(x2)⊕ROTR25(x2);
σ3=ROTR10(x3)⊕ROTR13(x3)⊕ROTR17(x3);
σ4=ROTR10(x4)⊕ROTR15(x4)⊕ROTR19(x4);
σ5=ROTR8(x5)⊕ROTR13(x5)⊕ROTR15(x5);
σ6=ROTR8(x6)⊕ROTR17(x6)⊕ROTR19(x6);
fi=(ki∧mi)⊕(ki∧ni)⊕(mi∧ni)(i=2,4,6);
其中,x1,x2,x3,x4,x5,x6为输入值,ki表示函数σi的输出,mi表示函数σi-1的输出,当i=1时,σ0是寄存器中的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611051964.4A CN106650240B (zh) | 2016-11-22 | 2016-11-22 | 并行哈希函数的构造方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611051964.4A CN106650240B (zh) | 2016-11-22 | 2016-11-22 | 并行哈希函数的构造方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106650240A true CN106650240A (zh) | 2017-05-10 |
CN106650240B CN106650240B (zh) | 2019-08-09 |
Family
ID=58811280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611051964.4A Active CN106650240B (zh) | 2016-11-22 | 2016-11-22 | 并行哈希函数的构造方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106650240B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018094566A1 (zh) * | 2016-11-22 | 2018-05-31 | 深圳大学 | 并行哈希函数的构造方法 |
CN109905228A (zh) * | 2017-12-07 | 2019-06-18 | 北京智云芯科技有限公司 | 一种实现哈希运算的专用计算电路 |
CN111143893A (zh) * | 2019-12-17 | 2020-05-12 | 北京宏思电子技术有限责任公司 | 一种哈希分组计算的安全实现方法及设备 |
-
2016
- 2016-11-22 CN CN201611051964.4A patent/CN106650240B/zh active Active
Non-Patent Citations (4)
Title |
---|
AMIR AKHAVAN等: ""A novel parallel hash function based on 3D chaotic map"", 《EURASIP JOURNAL ON ADVANCES IN SIGNAL PROCESSING》 * |
HARSHVARDHAN TIWARI等: ""A secure and efficient cryptographic hash function based on NewFORK-256"", 《EGYPTIAN INFORMATICS JOURNAL》 * |
JE SEN TEH等: ""Parallel chaotic hash function based on the shuffle-exchange network"", 《NONLINEAR DYNAMICS》 * |
SHIHONG WANG等: ""Coupled map lattice based hash function with collision resistance in single-iteration computation"", 《INFORMATION SCIENCES》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018094566A1 (zh) * | 2016-11-22 | 2018-05-31 | 深圳大学 | 并行哈希函数的构造方法 |
CN109905228A (zh) * | 2017-12-07 | 2019-06-18 | 北京智云芯科技有限公司 | 一种实现哈希运算的专用计算电路 |
CN109905228B (zh) * | 2017-12-07 | 2023-07-25 | 北京智云芯科技有限公司 | 一种实现哈希运算的专用计算电路 |
CN111143893A (zh) * | 2019-12-17 | 2020-05-12 | 北京宏思电子技术有限责任公司 | 一种哈希分组计算的安全实现方法及设备 |
CN111143893B (zh) * | 2019-12-17 | 2023-04-07 | 北京宏思电子技术有限责任公司 | 一种哈希分组计算的安全实现方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106650240B (zh) | 2019-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fouda et al. | A fast chaotic block cipher for image encryption | |
EP3241150B1 (en) | Determining cryptographic operation masks for improving resistance to external monitoring attacks | |
CN106650240A (zh) | 并行哈希函数的构造方法 | |
CN102970132B (zh) | 一种防止对分组算法进行功耗分析和电磁辐射分析的防护方法 | |
CN101006677A (zh) | 用于实施加密运算的方法和装置 | |
CN108768656B (zh) | 一种基于哈希算法的数据校验方法 | |
US20100235417A1 (en) | Circuit and method converting boolean and arithmetic masks | |
JP2010210940A (ja) | 演算装置及びプログラム | |
CN112257366A (zh) | 一种用于等价性验证的cnf生成方法及系统 | |
CN107204841A (zh) | 一种抵御差分功耗攻击的分组密码多s盒实现的方法 | |
Mendel et al. | Finding collisions for round-reduced SM3 | |
CN107885486B (zh) | 一种基于查找树的复合有限域求逆装置 | |
CN104301096A (zh) | Aes轮运算方法和电路 | |
CN104050625B (zh) | 一种明文构建初始密钥的复合混沌图像加密方法 | |
CN106330424A (zh) | 基于sm3算法的密码模块的防攻击方法及装置 | |
CN107395347A (zh) | 对称密码系统代数次数评估新方法 | |
US10387492B2 (en) | Information processing system, information processing method, and program | |
CN106201435A (zh) | 基于细胞神经网络的伪随机数生成方法 | |
Deepthi et al. | Cryptanalysis for reduced round Salsa and ChaCha: revisited | |
Liu et al. | Finding ordinary cube variables for Keccak-MAC with greedy algorithm | |
Dolmatov | GOST R 34.11-94: Hash Function Algorithm | |
Yang et al. | A stream cipher based on fractional pseudo chaotic random number generator | |
Mendel et al. | Cryptanalysis of reduced variants of the FORK-256 hash function | |
WO2018094566A1 (zh) | 并行哈希函数的构造方法 | |
CN109951282A (zh) | 一种基于分段cubic混沌映射的伪随机序列产生方法 |
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 |