一种减少SM3密码杂凑算法中运算量的方法及装置与流程

文档序号:12691860阅读:583来源:国知局
一种减少SM3密码杂凑算法中运算量的方法及装置与流程

本发明涉及物联网智能家居安全芯片应用领域,尤其涉及一种减少SM3密码杂凑算法中运算量的方法及装置。



背景技术:

智能家居正处在一种爆发式增长的前期,物联网产品是当今社会最主流的产品之一,已经与人类世界生活息息相关。物联网产品安全也是我们现在需要考虑的最重要的因素之一。保护物联网安全的核心技术-密码技术也越发凸显其重要性。从古至今密码技术一直都在广泛的被使用,随着计算机和网络通信技术的快速发展,越来越多的信息需要受到严格的保密,密码学也逐渐的走进了公众的日常生活。二十世纪七十年代末,杂凑函数被引入密码学,它在数据完整性、构造数字签名和认证方案等方面不可或缺。

SM3密码杂凑算法是我国国家密码局2010年公布的用于商业的密码杂凑标准。该密码算法通过消息填充、扩展、迭代压缩和杂凑值几个部分,其中迭代压缩是密码杂凑算法中最为核心的部分。以下是密码算法迭代压缩的部分过程:

SS1j←((Aj-1<<<12)+Ej-1+(Tj<<<j))<<<7

TT1j←FFj(Aj-1,Bj-1,Cj-1)+Dj-1+SS2j+W0

TT2j←GGj(Ej-1,Fj-1Gj-1)+Hj-1+SS1j+Wj

Dj←Cj-1

Cj←Bj-1<<<9

Bj←Aj-1

Aj←TT1j

Hj←Gj-1

Gj←Fj-1<<<19

Fj←Ej-1

Ej←P0(TT2j)

FFj(Aj-1,Bj-1,Cj-1)和GGj(Ej-1,Fj-1,Gj-1)均为布尔函数,其函数表达式分别为:

P0(X)和P1(X)置换函数

上式中的X为字。

Wj和W′j为消息拓展字

其中,<<<12、<<<j、<<<7、<<<15、<<<9、<<<19分别为循环左移12、j、7、15、9、19比特运算,为32比特异或运算,∧为32比特与运算,∨为32比特或运算,为32比特非运算。

作为算法的核心部分,密码算法迭代压缩的部分的运算效率在算法中显得尤为重要。如图1所示电路为现有国密算法电路图,每计算一次A和E的迭代过程,都需要使用5次串行加法运算。每对V进行一次迭代运算,都需要对ABCDEFGH这8个变量字进行64次迭代运算,所以产生的总延时是非常大的,也严重影响密码算法的运算速度。



技术实现要素:

本发明实施例提供了一种减少SM3密码杂凑算法中运算量的方法及装置,利用并行加法运算替代较多的串行加法运算,减少串行加法运算数量,从而减少运算延时,提高SM3密码杂凑算法运算速度。

本发明实施例提供了一种减少SM3密码杂凑算法中运算量的方法,包括:

S1,根据预置的消息分组B(i)、第一公式和第二公式确定32比特长度的消息扩展字W0-W67,W′0-W′63,所述第一公式为所述第二公式为其中i为第一迭代次数,为置换函数;

S2,分别将变量字A、B、C、D、E、F、G、H、X、Y、Z的初始值初始化为A-1、B-1、C-1、D-1、E-1、F-1、G-1、H-1、X-1、Y-1、Z-1并将第二迭代次数j初始化为0;

S3,根据预置的第三公式确定32比特长度的常量Tj;

S4,根据预置的迭代公式进行初次迭代运算,确定中间变量字SS1、SS2、TT1、TT2、X、Y、Z和各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

所述迭代公式具体包括

SS1j←((Aj-1<<<12)+Xj-1)<<<7,

TT1j←FFj(Aj-1,Bj-1,Cj-1)+SS2j+Pj-1

TT2j←GGj(Ej-1,Fj-1,Gj-1)+SS1j+Qj-1

Dj←Cj-1

Cj←Bj-1<<<9,

Bj←Aj-1

Aj←TT1j

Hj←Gj-1

Gj←Fj-1<<<19,

Fj←Ej-1

Ej←P0(TT2j),

Xj←Ej-1+(Tj+1<<<(j+1)),

Yj←Cj-1+W′j+1

Zj←Gj-1+Wj+1

其中,X-1=E-1+(T0<<<j)、Y-1=D-1+W′0、Z-1=H-1+W0,Aj-1、Bj-1、Cj-1、Dj-1、Ej-1、Fj-1、Gj-1、Hj-1为相应变量字的第j-1次迭代值;Xj-1、Yj-1、Z j-1分别为X、Y和Z的第j-1次迭代值,FFj(Aj-1,Bj-1,Cj-1)和GGj(Ej-1,Fj-1,Gj-1)均为布尔函数,

P0(TT2j)为置换函数,<<<12、<<<j、<<<7、<<<15、<<<9、<<<19分别为循环左移12、j、7、15、9、19比特运算,为32比特异或运算,∧为32比特与运算,∨为32比特或运算,为32比特非运算;

S5,判断j是否等于63;

若j等于63,则输出各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

若j小于63,则j的值增加1然后执行步骤S3。

优选地,在步骤S1之前还包括:

S0,将所述第一迭代次数i的初始值初始化为0并初始化与所述第一迭代次数i对应的压缩函数V的第0次迭代值V(0)。

优选地,步骤S1还包括:

根据预置的消息分组B(i)确定参数N。

优选地,在步骤S5之后还包括:

S6,将Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj的先后顺序作为比特位由高到低的排列顺序组合得到的变量与所述压缩函数V的第i次迭代值进行异或运算,得到所述压缩函数V的第i+1次迭代值V(i+1)

S7,判断i是否等于N-1;

若i等于N-1,则输出V(N)

若i小于N-1,则将i的值加1并执行步骤S1。

本发明实施例提供了一种减少SM3密码杂凑算法中运算量的装置,包括:

第一确定单元,用于根据预置的消息分组B(i)、第一公式和第二公式确定32比特长度的消息扩展字W0-W67,W′0-W′63,所述第一公式为所述第二公式为其中i为第一迭代次数,为置换函数;

第一初始化单元,用于分别将变量字A、B、C、D、E、F、G、H、X、Y、Z的初始值初始化为A-1、B-1、C-1、D-1、E-1、F-1、G-1、H-1、X-1、Y-1、Z-1并将第二迭代次数j初始化为0;

第二确定单元,用于根据预置的第三公式确定32比特长度的常量Tj;

第三确定单元,用于根据预置的迭代公式进行初次迭代运算,确定中间变量字SS1、SS2、TT1、TT2、X、Y、Z和各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

所述迭代公式具体包括

SS1j←((Aj-1<<<12)+Xj-1)<<<7,

TT1j←FFj(Aj-1,Bj-1,Cj-1)+SS2j+Pj-1

TT2j←GGj(Ej-1,Fj-1,Gj-1)+SS1j+Qj-1

Dj←Cj-1

Cj←Bj-1<<<9,

Bj←Aj-1

Aj←TT1j

Hj←Gj-1

Gj←Fj-1<<<19,

Fj←Ej-1

Ej←P0(TT2j),

Xj←Ej-1+(Tj+1<<<(j+1)),

Yj←Cj-1+W′j+1

Zj←Gj-1+Wj+1

其中,X-1=E-1+(T0<<<j)、Y-1=D-1+W′0、Z-1=H-1+W0,Aj-1、Bj-1、Cj-1、Dj-1、Ej-1、Fj-1、Gj-1、Hj-1为相应变量字的第j-1次迭代值;Xj-1、Yj-1、Z j-1分别为X、Y和Z的第j-1次迭代值,FFj(Aj-1,Bj-1,Cj-1)和GGj(Ej-1,Fj-1,Gj-1)均为布尔函数,

P0(TT2j)为置换函数,<<<12、<<<j、<<<7、<<<15、<<<9、<<<19分别为循环左移12、j、7、15、9、19比特运算,为32比特异或运算,∧为32比特与运算,∨为32比特或运算,为32比特非运算;

判断单元,用于判断j是否等于63;

若j等于63,则输出各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

若j小于63,则j的值增加1然后执行步骤S3。

优选地,

所述减少SM3密码杂凑算法中运算量的装置还包括:

第二初始化单元,用于将所述第一迭代次数i的初始值初始化为0并初始化与所述第一迭代次数i对应的压缩函数V的第0次迭代值V(0)。

优选地,

所述第一确定单元还包括:

第四确定子单元,用于根据预置的消息分组B(i)确定参数N。

优选地,

所述减少SM3密码杂凑算法中运算量的装置还包括:

计算单元,用于将Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj的先后顺序作为比特位由高到低的排列顺序组合得到的变量与所述压缩函数V的第i次迭代值进行异或运算,得到所述压缩函数V的第i+1次迭代值V(i+1)

第二判断单元,用于判断i是否等于N-1;

若i等于N-1,则输出V(N)

若i小于N-1,则将i的值加1并执行步骤S1。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例提供了一种减少SM3密码杂凑算法中运算量的方法及装置,利用并行加法运算替代较多的串行加法运算,减少串行加法运算数量,从而减少运算延时,提高SM3密码杂凑算法运算速度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为现有的SM3密码杂凑算法迭代过程电路图;

图2为本发明实施例提供的一种减少SM3密码杂凑算法中运算量的方法的第一实施例的流程示意图;

图3为本发明实施例提供的一种减少SM3密码杂凑算法中运算量的方法的第二实施例的流程示意图;

图4为本发明实施例提供的一种减少SM3密码杂凑算法中运算量的方法的第二实施例对应的迭代过程电路图;

图5为本发明实施例提供的一种减少SM3密码杂凑算法中运算量的装置的第一实施例的结构示意图;

图6为本发明实施例提供的一种减少SM3密码杂凑算法中运算量的装置的第二实施例的结构示意图。

具体实施方式

本发明实施例提供了一种减少SM3密码杂凑算法中运算量的方法及装置,利用并行加法运算替代较多的串行加法运算,减少串行加法运算数量,从而减少运算延时,提高SM3密码杂凑算法运算速度。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图2,本发明实施例提供了一种减少SM3密码杂凑算法中运算量的方法第一实施例,包括:

S1,根据预置的消息分组B(i)、第一公式和第二公式确定32比特长度的消息扩展字W0-W67,W′0-W′63,第一公式为第二公式为其中i为第一迭代次数,为置换函数;

在本发明实施例中,首先需要根据预置的消息分组B(i)、第一公式和第二公式确定32比特长度的消息扩展字W0-W67,W′0-W′63,第一公式为第二公式为其中i为第一迭代次数,为置换函数,W0-W67,W′0-W′63是指W0至W67,W′0-W′63是指W′0至W′63

S2,分别将变量字A、B、C、D、E、F、G、H、X、Y、Z的初始值初始化为A-1、B-1、C-1、D-1、E-1、F-1、G-1、H-1、X-1、Y-1、Z-1并将第二迭代次数j初始化为0;

在本发明实施例中,在根据预置的消息分组B(i)、第一公式和第二公式确定32比特长度的消息扩展字W0-W67,W′0-W′63之后,还需要分别将变量字A、B、C、D、E、F、G、H、X、Y、Z的初始值初始化为A-1、B-1、C-1、D-1、E-1、F-1、G-1、H-1、X-1、Y-1、Z-1并将第二迭代次数j初始化为0。

S3,根据预置的第三公式确定32比特长度的常量Tj;

在本发明实施例中,在分别将变量字A、B、C、D、E、F、G、H、X、Y、Z的初始值初始化为A-1、B-1、C-1、D-1、E-1、F-1、G-1、H-1、X-1、Y-1、Z-1并将第二迭代次数j初始化为0之后,还需要根据预置的第三公式确定32比特长度的常量Tj。

S4,根据预置的迭代公式进行初次迭代运算,确定中间变量字SS1、SS2、TT1、TT2、X、Y、Z和各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

迭代公式具体包括

SS1j←((Aj-1<<<12)+Xj-1)<<<7,

TT1j←FFj(Aj-1,Bj-1,Cj-1)+SS2j+Pj-1

TT2j←GGj(Ej-1,Fj-1,Gj-1)+SS1j+Qj-1

Dj←Cj-1

Cj←Bj-1<<<9,

Bj←Aj-1

Aj←TT1j

Hj←Gj-1

Gj←Fj-1<<<19,

Fj←Ej-1

Ej←P0(TT2j),

Xj←Ej-1+(Tj+1<<<(j+1)),

Yj←Cj-1+W′j+1

Zj←Gj-1+Wj+1

其中,X-1=E-1+(T0<<<j)、Y-1=D-1+W′0、Z-1=H-1+W0,Aj-1、Bj-1、Cj-1、Dj-1、Ej-1、Fj-1、Gj-1、Hj-1为相应变量字的第j-1次迭代值;Xj-1、Yj-1、Z j-1分别为X、Y和Z的第j-1次迭代值,FFj(Aj-1,Bj-1,Cj-1)和GGj(Ej-1,Fj-1,Gj-1)均为布尔函数,

P0(TT2j)为置换函数,<<<12、<<<j、<<<7、<<<15、<<<9、<<<19分别为循环左移12、j、7、15、9、19比特运算,为32比特异或运算,∧为32比特与运算,V为32比特或运算,为32比特非运算;

在本发明实施例中,在根据预置的第三公式确定32比特长度的常量Tj之后,还需要根据预置的迭代公式进行初次迭代运算,确定中间变量字SS1、SS2、TT1、TT2、X、Y、Z和各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj。

S5,判断j是否等于63;

若j等于63,则输出各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

若j小于63,则j的值增加1然后执行步骤S3;

在本发明实施例中,在根据预置的迭代公式进行初次迭代运算,确定中间变量字SS1、SS2、TT1、TT2、X、Y、Z和各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj之后,还需要判断j是否等于63;

若j等于63,则输出各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

若j小于63,则j的值增加1然后执行步骤S3;

需要说明的是,作为循环迭代过程主体部分,步骤S1至步骤S5需要迭代64次。在每次迭代过程中,须首先计算中间变量字SS1、SS2、TT1、TT2、X、Y、Z和消息扩展字W0-W67,W′0-W′63,确定变量字A和E的第j次迭代值Aj和Ej所需要用到的中间变量字X、Y和Z均为前一次迭代所产生的迭代值Xj-1、Yj-1、Zj-1,并确定迭代值Xj、Yj、Zj用于计算Aj+1和Ej+1。可以看出X、Y和Z每一次迭代需进行一次加法运算。

变量字A、B、C、D、E、F、G、H进行64次迭代时j的值为63,而此时Yj←Cj-1+W′j+1,此时Y63发生溢出错误会停止计算,并得到各变量字的迭代结果A63、B63、C63、D63、E63、F63、G63、H63。

请参阅图3和图4,本发明实施例提供了一种减少SM3密码杂凑算法中运算量的方法第二实施例,包括:

101,将第一迭代次数i的初始值初始化为0并初始化与第一迭代次数i对应的压缩函数V的第0次迭代值V(0);

在本发明实施例中,首先需要将第一迭代次数i的初始值初始化为0并初始化与第一迭代次数i对应的压缩函数V的第0次迭代值V(0),V(0)是用16进制表示的7380166f 4914b2b9 172442d7da8a0600a96f30bc 163138aa e38dee4d b0fb0e4e。

102,根据预置的消息分组B(i)、第一公式和第二公式确定32比特长度的消息扩展字W0-W67,W′0-W′63和参数N,第一公式为第二公式为其中i为第一迭代次数,为置换函数;

在本发明实施例中,在将第一迭代次数i的初始值初始化为0并初始化与第一迭代次数i对应的压缩函数V的第0次迭代值V(0)之后,还需要根据预置的消息分组B(i)、第一公式和第二公式确定32比特长度的消息扩展字W0-W67,W′0-W′63和参数N,第一公式为第二公式为其中i为第一迭代次数,为置换函数。

103,分别将变量字A、B、C、D、E、F、G、H、X、Y、Z的初始值初始化为A-1、B-1、C-1、D-1、E-1、F-1、G-1、H-1、X-1、Y-1、Z-1并将第二迭代次数j初始化为0;

在本发明实施例中,在根据预置的消息分组B(i)、第一公式和第二公式确定32比特长度的消息扩展字W0-W67,W′0-W′63之后,还需要分别将变量字A、B、C、D、E、F、G、H、X、Y、Z的初始值初始化为A-1、B-1、C-1、D-1、E-1、F-1、G-1、H-1、X-1、Y-1、Z-1并将第二迭代次数j初始化为0。

104,根据预置的第三公式确定32比特长度的常量Tj;

在本发明实施例中,在分别将变量字A、B、C、D、E、F、G、H、X、Y、Z的初始值初始化为A-1、B-1、C-1、D-1、E-1、F-1、G-1、H-1、X-1、Y-1、Z-1并将第二迭代次数j初始化为0之后,还需要根据预置的第三公式确定32比特长度的常量Tj。

105,根据预置的迭代公式进行初次迭代运算,确定中间变量字SS1、SS2、TT1、TT2、X、Y、Z和各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

迭代公式具体包括

SS1j←((Aj-1<<<12)+Xj-1)<<<7,

TT1j←FFj(Aj-1,Bj-1,Cj-1)+SS2j+Pj-1

TT2j←GGj(Ej-1,Fj-1,Gj-1)+SS1j+Qj-1

Dj←Cj-1

Cj←Bj-1<<<9,

Bj←Aj-1

Aj←TT1j

Hj←Gj-1

Gj←Fj-1<<<19,

Fj←Ej-1

Ej←P0(TT2j),

Xj←Ej-1+(Tj+1<<<(j+1)),

Yj←Cj-1+W′j+1

Zj←Gj-1+Wj+1

其中,X-1=E-1+(T0<<<j)、Y-1=D-1+W′0、Z-1=H-1+W0,Aj-1、Bj-1、Cj-1、Dj-1、Ej-1、Fj-1、Gj-1、Hj-1为相应变量字的第j-1次迭代值;Xj-1、Yj-1、Z j-1分别为X、Y和Z的第j-1次迭代值,FFj(Aj-1,Bj-1,Cj-1)和GGj(Ej-1,Fj-1,Gj-1)均为布尔函数,

P0(TT2j)为置换函数,<<<12、<<<j、<<<7、<<<15、<<<9、<<<19分别为循环左移12、j、7、15、9、19比特运算,为32比特异或运算,∧为32比特与运算,∨为32比特或运算,为32比特非运算;

在本发明实施例中,在根据预置的第三公式确定32比特长度的常量Tj之后,还需要根据预置的迭代公式进行初次迭代运算,确定中间变量字SS1、SS2、TT1、TT2、X、Y、Z和各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj。

106,判断j是否等于63;

若j等于63,则输出各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

若j小于63,则j的值增加1然后执行步骤104。

在本发明实施例中,在根据预置的迭代公式进行初次迭代运算,确定中间变量字SS1、SS2、TT1、TT2、X、Y、Z和各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj之后,还需要判断j是否等于63;

若j等于63,则输出各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

若j小于63,则j的值增加1然后执行步骤104。

107,将Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj的先后顺序作为比特位由高到低的排列顺序组合得到的变量与压缩函数V的第i次迭代值进行异或运算,得到压缩函数V的第i+1次迭代值V(i+1)

在本发明实施例中,在判断j是否等于63之后,还需要将Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj的先后顺序作为比特位由高到低的排列顺序组合得到的变量与压缩函数V的第i次迭代值进行异或运算,得到压缩函数V的第i+1次迭代值V(i+1)

108,判断i是否等于N-1;

若i等于N-1,则输出V(N)

若i小于N-1,则将i的值加1并执行步骤102;

在本发明实施例中,在将Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj的先后顺序作为比特位由高到低的排列顺序组合得到的变量与压缩函数V的第i次迭代值进行异或运算,得到压缩函数V的第i+1次迭代值V(i+1)之后,还需要判断i是否等于N-1;

若i等于N-1,则输出V(N)

若i小于N-1,则将i的值加1并执行步骤102。

在本发明实施例中,如图4所示,图4为本发明实施例提供的一种减少SM3密码杂凑算法中运算量的方法的第二实施例对应的迭代过程电路图,对比图4和图1可以看出,本发明在加法器数量上并没有发生改变,本发明优化的是电路结构,从路径A和E共用电路的2个串行加法器变成并行加法器,将各自原有的3个串行加法器都变成并行方式,将原有的关键路径上的5个串行加法器减少到了3个串行加法器,极大的减少了关键路径中串行加法运算的数量,提高了算法的效率。

请参阅图5,本发明实施例提供了一种减少SM3密码杂凑算法中运算量的装置的第一实施例,包括:

第一确定单元501,用于根据预置的消息分组B(i)、第一公式和第二公式确定32比特长度的消息扩展字W0-W67,W′0-W′63,第一公式为第二公式为其中i为第一迭代次数,为置换函数;

第一初始化单元502,用于分别将变量字A、B、C、D、E、F、G、H、X、Y、Z的初始值初始化为A-1、B-1、C-1、D-1、E-1、F-1、G-1、H-1、X-1、Y-1、Z-1并将第二迭代次数j初始化为0;

第二确定单元503,用于根据预置的第三公式确定32比特长度的常量Tj;

第三确定单元504,用于根据预置的迭代公式进行初次迭代运算,确定中间变量字SS1、SS2、TT1、TT2、X、Y、Z和各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

迭代公式具体包括

SS1j←((Aj-1<<<12)+Xj-1)<<<7,

TT1j←FFj(Aj-1,Bj-1,Cj-1)+SS2j+Pj-1

TT2j←GGj(Ej-1,Ej-1,Gj-1)+SS1j+Qj-1

Dj←Cj-1

Cj←Bj-1<<<9,

Bj←Aj-1

Aj←TT1j

Hj←Gj-1

Gj←Fj-1<<<19,

Fj←Ej-1

Ej←P0(TT2j),

Xj←Ej-1+(Tj+1<<<(j+1)),

Yj←Cj-1+W′j+1

Zj←Gj-1+Wj+1

其中,X-1=E-1+(T0<<<j)、Y-1=D-1+W′0、Z-1=H-1+W0,Aj-1、Bj-1、Cj-1、Dj-1、Ej-1、Fj-1、Gj-1、Hj-1为相应变量字的第j-1次迭代值;Xj-1、Yj-1、Z j-1分别为X、Y和Z的第j-1次迭代值,FFj(Aj-1,Bj-1,Cj-1)和GGj(Ej-1,Fj-1,Gj-1)均为布尔函数,

P0(TT2j)为置换函数,<<<12、<<<j、<<<7、<<<15、<<<9、<<<19分别为循环左移12、j、7、15、9、19比特运算,为32比特异或运算,∧为32比特与运算,∨为32比特或运算,为32比特非运算;

判断单元505,用于判断j是否等于63;

若j等于63,则输出各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

若j小于63,则j的值增加1然后执行步骤S3。

请参阅图6,本发明实施例提供了一种减少SM3密码杂凑算法中运算量的装置的第二实施例,包括:

第二初始化单元601,用于将第一迭代次数i的初始值初始化为0并初始化与第一迭代次数i对应的压缩函数V的第0次迭代值V(0)。

第一确定单元602,用于根据预置的消息分组B(i)、第一公式和第二公式确定32比特长度的消息扩展字W0-W67,W′0-W′63,第一公式为第二公式为其中i为第一迭代次数,为置换函数;

第一初始化单元603,用于分别将变量字A、B、C、D、E、F、G、H、X、Y、Z的初始值初始化为A-1、B-1、C-1、D-1、E-1、F-1、G-1、H-1、X-1、Y-1、Z-1并将第二迭代次数j初始化为0;

第二确定单元604,用于根据预置的第三公式确定32比特长度的常量Tj;

第三确定单元605,用于根据预置的迭代公式进行初次迭代运算,确定中间变量字SS1、SS2、TT1、TT2、X、Y、Z和各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

迭代公式具体包括

SS1j←((Aj-1<<<12)+Xj-1)<<<7,

TT1j←FFj(Aj-1,Bj-1,Cj-1)+SS2j+Pj-1

TT2j←GGj(Ej-1,Fj-1,Gj-1)SS1j+Qj-1

Dj←Cj-1

Cj←Bj-1<<<9,

Bj←Aj-1

Aj←TT1j

Hj←Gj-1

Gj←Fj-1<<<19,

Fj←Ej-1

Ej←P0(TT2j),

Xj←Ej-1+(Tj+1<<<(j+1)),

Yj←Cj-1+W′j+1

Zj←Gj-1+Wj+1

其中,X-1=E-1+(T0<<<j)、Y-1=D-1+W′0、Z-1=H-1+W0,Aj-1、Bj-1、Cj-1、Dj-1、Ej-1、Fj-1、Gj-1、Hj-1为相应变量字的第j-1次迭代值;Xj-1、Yj-1、Z j-1分别为X、Y和Z的第j-1次迭代值,FFj(Aj-1,Bj-1,Cj-1)和GGj(Ej-1,Fj-1,Gj-1)均为布尔函数,

P0(TT2j)为置换函数,<<<12、<<<j、<<<7、<<<15、<<<9、<<<19分别为循环左移12、j、7、15、9、19比特运算,为32比特异或运算,∧为32比特与运算,∨为32比特或运算,为32比特非运算;

判断单元606,用于判断j是否等于63;

若j等于63,则输出各变量字A、B、C、D、E、F、G、H的第j次迭代值SS1j、SS2j、TT1j、TT2j、Xj、Yj、Zj、Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj;

若j小于63,则j的值增加1然后执行步骤S3。

第一确定单元602还包括:

第四确定子单元6021,用于根据预置的消息分组B(i)确定参数N。

减少SM3密码杂凑算法中运算量的装置还包括:

计算单元607,用于将Aj、Bj、Cj、Dj、Ej、Fj、Gj、Hj的先后顺序作为比特位由高到低的排列顺序组合得到的变量与压缩函数V的第i次迭代值进行异或运算,得到压缩函数V的第i+1次迭代值V(i+1)

第二判断单元608,用于判断i是否等于N-1;

若i等于N-1,则输出V(N)

若i小于N-1,则将i的值加1并执行步骤S1。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1