一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种SM3的数据加密方法及相关装置与流程

2021-11-09 20:49:00 来源:中国专利 TAG:

一种sm3的数据加密方法及相关装置
技术领域
1.本技术涉及计算机技术领域,特别涉及一种sm3的数据加密方法、加密数据装置、计算设备以及计算机可读存储介质。


背景技术:

2.sm3算法作为密码杂凑算法,输出消息摘要值长度为256bit,消息分组长度512bit,迭代压缩次数64次。在算法的硬件实现中,数据一般需要经过消息分组和填充、扩展生成消息字和64轮函数迭代压缩等过程,其中函数迭代压缩过程计算复杂,资源消耗最多,耗时也最多,需要进行相应的优化。
3.相关技术中,基于流水线的sm3算法,在进行64轮的函数迭代压缩时使用流水线方式,即将sm3算法中的迭代压缩进行循环展开,将每一轮计算的输出作为下一轮的输入,继续计算,直到当前哈希值无剩下的内容需要继续计算,输出计算的最终哈希值。但是,在硬件实现时会额外消耗大量的电路资源,无法很好的应用于小面积的芯片,降低适用性。
4.因此,如何提高sm3算法的电路资源利用率是本领域技术人员关注的重点问题。


技术实现要素:

5.本技术的目的是提供一种sm3的数据加密方法、加密数据装置、计算设备以及计算机可读存储介质,提高电路资源的利用率和计算的效率。
6.为解决上述技术问题,本技术提供一种sm3的数据加密方法,包括:
7.将接收到的明文数据进行填充分组处理,得到多组数据;
8.根据所述多组数据进行分组扩展处理,得到消息字;
9.采用超前进位加法器对所述多组数据和所述消息字进行迭代压缩计算,得到加密数据。
10.可选的,采用超前进位加法器对所述多组数据和所述消息字进行迭代压缩计算,得到加密数据,包括:
11.采用在关键路径设置的超前进位加法器对所述多组数据和所述消息字进行迭代压缩计算,得到加密数据;其中,所述超前进位加法器为在所述迭代压缩计算的关键路径设置的加法器,所述关键路径为所述迭代压缩计算中运算量最大的计算路径。
12.可选的,所述超前进位加法器为32bit超前进位加法器;
13.相应的,所述关键路径为根据所述32bit超前进位加法器设置的两组并行计算的计算路径。
14.可选的,所述32bit超前进位加法器包括11组级联的3bit超前进位加法器。
15.可选的,所述3bit超前进位加法器包括第一超前进位加法器、第二超前进位加法器以及第三超前进位加法器;
16.其中,所述第一超前进位加法器至所述第三超前进位加法器依次输出所述3bit超前进位加法器的输出值的三个bit位的值。
17.本技术还提供一种sm3的数据加密装置,包括:
18.填充分组模块,用于将接收到的明文数据进行填充分组处理,得到多组数据;
19.分组扩展模块,用于根据所述多组数据进行分组扩展处理,得到消息字;
20.迭代压缩计算模块,用于采用超前进位加法器对所述多组数据和所述消息字进行迭代压缩计算,得到加密数据。
21.可选的,所述迭代压缩计算模块,具体用于采用在关键路径设置的超前进位加法器对所述多组数据和所述消息字进行迭代压缩计算,得到加密数据;其中,所述超前进位加法器为在所述迭代压缩计算的关键路径设置的加法器,所述关键路径为所述迭代压缩计算中运算量最大的计算路径。
22.可选的,所述超前进位加法器为32bit超前进位加法器;
23.相应的,所述关键路径为根据所述32bit超前进位加法器设置的两组并行计算的计算路径。
24.本技术还提供一种计算设备,包括:
25.存储器,用于存储计算机程序;
26.处理器,用于执行所述计算机程序时实现如上所述的加密数据方法的步骤。
27.本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的加密数据方法的步骤。
28.本技术所提供的一种sm3的数据加密方法,包括:将接收到的明文数据进行填充分组处理,得到多组数据;根据所述多组数据进行分组扩展处理,得到消息字;采用超前进位加法器对所述多组数据和所述消息字进行迭代压缩计算,得到加密数据。
29.通过采用超前进位加法器对所述多组数据和所述消息字进行迭代压缩计算,也就是在迭代压缩计算的过程中采用超前进位加法器进行计算,避免了异或移位操作中加法器存在的进位延时,提高加法器的操作效率,降低延时,提高sm3算法加密的适用性。
30.本技术还提供一种sm3的加密数据装置、计算设备以及计算机可读存储介质,具有以上有益效果,在此不做赘述。
附图说明
31.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
32.图1为本技术实施例所提供的一种sm3的数据加密方法的结构示意图;
33.图2为本技术实施例所提供的一种sm3算法压缩函数的示意图;
34.图3为本技术实施例所提供的一种a’寄存器计算过程的示意图;
35.图4为本技术实施例所提供的3bit

lca的结构示意图(一);
36.图5为本技术实施例所提供的3bit

lca的结构示意图(二);
37.图6为本技术实施例所提供的3bit

lca的结构示意图(三);
38.图7为本技术实施例所提供的一种sm3的数据加密装置的结构示意图。
具体实施方式
39.本技术的核心是提供一种sm3的数据加密方法、加密数据装置、计算设备以及计算机可读存储介质,提高电路资源的利用率和计算的效率。
40.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
41.相关技术中,基于流水线的sm3算法,在进行64轮的函数迭代压缩时使用流水线方式,即将sm3算法中的迭代压缩进行循环展开,将每一轮计算的输出作为下一轮的输入,继续计算,直到当前哈希值无剩下的内容需要继续计算,输出计算的最终哈希值。但是,在硬件实现时会额外消耗大量的电路资源,无法很好的应用于小面积的芯片,降低适用性。
42.因此,本技术提供一种sm3的数据加密方法,通过采用超前进位加法器对所述多组数据和所述消息字进行迭代压缩计算,也就是在迭代压缩计算的过程中采用超前进位加法器进行计算,避免了异或移位操作中加法器存在的进位延时,提高加法器的操作效率,降低延时,提高sm3算法加密的适用性。
43.以下通过一个实施例,对本技术提供的一种sm3的数据加密方法进行说明。
44.请参考图1,图1为本技术实施例所提供的一种sm3的数据加密方法的结构示意图。
45.本实施例中,该方法可以包括:
46.s101,将接收到的明文数据进行填充分组处理,得到多组数据;
47.本步骤旨在将接收到的明文数据进行填充分组处理,得到多组数据。
48.其中,明文数据就是需要通过sm3算法进行数据加密的数据。
49.将输入的明文数据按照规则填充,并分成512bit一组的模块,是sm3杂凑算法的基础组成部分。在接收到端口的有效数据后,首先将其同时缓存到7个相同的32bit位宽,深度为64的双口ram(random access memory,随机存取存储器)中,记为ram_a,ram_b,ram_c,ram_d,ram_e,ram_f,ram_g。当接收完一组512bit的数据时,仍然没有收到data_in_last信号,说明此数据组个数多于512bit,不需要做填充处理;当没有接收完一组512bit数据即存在data_in_last时,此时需要做填充处理,首先将比特“1”添加到消息的末尾,再添加“0”直到达到512bit。
50.s102,根据多组数据进行分组扩展处理,得到消息字;
51.在s101的基础上,本步骤旨在根据多组数据进行分组扩展处理,得到消息字;
52.可见,本步骤主要是产生算法计算过程中需要的消息字w
j
和w
j’,并将压缩函数需要的消息字送入到指定位置,该部分是sm3算法硬件结构中的重要模块。由于在后续迭代计算中需要使用消息字参与计算,为降低迭代压缩的操作时间,需要提前生成消息字,在设定节拍送入迭代压缩模块。在消息填充分组中,512bit数据已经按照32bit位宽写入了16组数据,记为w0‑
w
15
。分组扩展模块就是通过计算产生其他的116组数据。
53.首先计算w
j
,计算公式可以如下:
[0054][0055]
通过ram将各组数据同时读出,具体的通过ram_a将w
j

16
读出,ram_b将w
j
‑9读出,ram_c将w
j
‑3读出,ram_d将w
j

13
读出,ram_e将w
j
‑6读出。读出后的数据根据算法的计算公式
进行相应的循环移位和异或操作,进而计算wj并将其写入7组ram中。
[0056]
计算w
j’,计算公式可以如下:
[0057][0058]
通过ram_f将w
j
读出,ram_g将w
j 4
读出,按照公式进行按位异或操作,并将计算结果写回ram_g。
[0059]
s103,采用超前进位加法器对多组数据和消息字进行迭代压缩计算,得到加密数据。
[0060]
在s102的基础上,本步骤旨在采用超前进位加法器对多组数据和消息字进行迭代压缩计算,得到加密数据。可见,本步骤中就是对分组得到的多组数据和消息字进行迭代压缩计算,最终得到的加密数据。
[0061]
其中,在迭代压缩计算的过程中存在较多的加法器相关的运算,但是加法器中的存在一定的进位延时,会导致进行运算时出现延时,降低数据加密的效率。因此,本步骤中采用超前进位加法器替换迭代压缩计算中原有的加法器,避免出现加法器的进位延时,降低加法器计算的整体延时,提高计算效率。
[0062]
其中,超前进位加法器是对普通的全加器进行改良而设计成的并行加法器,主要是针对普通全加器串联时互相进位产生的延迟进行了改良。也就是说,通过超前进位加法器在本实施例中实现了并行的加法操作。
[0063]
进一步的,为了提高本步骤中进行迭代压缩计算的效率,降低延时。本步骤可以包括:
[0064]
采用在关键路径设置的超前进位加法器对多组数据和消息字进行迭代压缩计算,得到加密数据;其中,超前进位加法器为在迭代压缩计算的关键路径设置的加法器,关键路径为迭代压缩计算中运算量最大的计算路径。
[0065]
可见,通过本可选方案中主要是对迭代压缩计算中的关键路径中的加法器设置为超前进位加法器,然后进行计算。且其中的关键路径为迭代压缩算法中计算量最大的计算路径。
[0066]
在迭代压缩计算的过程中,每个寄存器均对应了一条进行计算的计算路径。其中,第一个寄存器也就是a寄存器对应的计算路径最为复杂,相应的运算量也是最大的。
[0067]
进一步的,上一可选的超前进位加法器为32bit超前进位加法器;
[0068]
相应的,关键路径为根据32bit超前进位加法器设置的两组并行计算的计算路径。
[0069]
可见,本可选方案中主要是说明采用的超前进位加法器为32bit超前进位加法器。可以知道的是,在迭代压缩计算的过程将每个加法器均替换为32bit超前进位加法器,或将关键路径中的加法器替换为32bit超前进位加法器,该关键路径中可以包括多个32bit超前进位加法器。
[0070]
进一步的,上一可选方案中32bit超前进位加法器包括11组级联的3bit超前进位加法器。
[0071]
可见,本可选方案中的32bit超前进位加法器由11组3bit超前进位加法器级联而成。
[0072]
进一步的,上一可选方案中的3bit超前进位加法器包括第一超前进位加法器、第二超前进位加法器以及第三超前进位加法器;
[0073]
其中,第一超前进位加法器至第三超前进位加法器依次输出3bit超前进位加法器的输出值的三个bit位的值。
[0074]
可见,本可选方案中主要是说明3bit超前进位加法器包括第一超前进位加法器、第二超前进位加法器以及第三超前进位加法器。每个超前进位加法器以此输出对应的三个bit位的值。
[0075]
综上,本实施例通过采用超前进位加法器对多组数据和消息字进行迭代压缩计算,也就是在迭代压缩计算的过程中采用超前进位加法器进行计算,避免了异或移位操作中加法器存在的进位延时,提高加法器的操作效率,降低延时,提高sm3算法加密的适用性。
[0076]
以下通过一个具体的实施例,对本技术提供的一种sm3的数据加密方法做进一步说明。
[0077]
本实施例中,sm3算法模块在硬件实现时可分为三个部分:消息填充分组、分组扩展、压缩函数。其中,该sm3算法模块的接口信号说明如表1。
[0078]
表1 sm3算法模块接口信号
[0079][0080][0081]
基于此,本实施例的方法可以包括:
[0082]
步骤1,消息填充分组。
[0083]
此模块是将输入的明文数据按照规则填充,并分成512bit一组的模块,是sm3杂凑算法的基础组成部分。在接收到端口的有效数据后,首先将其同时缓存到7个相同的32bit位宽,深度为64的双口ram中,记为ram_a,ram_b,ram_c,ram_d,ram_e,ram_f,ram_g。当接收完一组512bit的数据时,仍然没有收到data_in_last信号,说明此数据组个数多于512bit,不需要做填充处理;当没有接收完一组512bit数据即存在data_in_last时,此时需要做填
充处理,首先将比特“1”添加到消息的末尾,再添加“0”直到达到512bit。
[0084]
步骤2,分组扩展。
[0085]
分组扩展用来产生算法计算过程中需要的消息字w
j
和w
j’,并将轮函数需要的消息字送入到指定位置,该部分是sm3算法硬件结构中的重要模块。由于在后续迭代计算中需要使用消息字参与计算,为降低迭代压缩的操作时间,需要提前生成消息字,在设定节拍送入迭代压缩模块。在消息填充分组中,512bit数据已经按照32bit位宽写入了16组数据,记为w0‑
w
15
。分组扩展模块就是通过计算产生其他的116组数据。
[0086]
首先计算w
j

[0087][0088]
首先通过ram将各组数据同时读出,具体的通过ram_a将w
j

16
读出,ram_b将w
j
‑9读出,ram_c将w
j
‑3读出,ram_d将w
j

13
读出,ram_e将w
j
‑6读出。读出后的数据根据算法的计算公式进行相应的循环移位和异或操作,进而计算wj并将其写入7组ram中。
[0089]
计算w
j’:
[0090]
首先通过ram_f将w
j
读出,ram_g将w
j 4
读出,按照公式进行按位异或操作,并将计算结果写回ram_g。
[0091][0092]
步骤3,迭代压缩。
[0093]
首先进行关键路径划分。
[0094]
请参考图2,图2为本技术实施例所提供的一种sm3算法压缩函数的示意图。
[0095]
从图2中可以看出,在单轮压缩函数实现中,寄存器a’的计算过程最复杂,涉及的运算量也最大,在硬件实现为关键路径,也就是提高算法性能的关键部分。
[0096]
其计算公式为:
[0097]
ss1=((a<<12) e (tj<<j))<<7;
[0098][0099]
tt1=ffj(a;b;c) d ss2 w
j’;
[0100]
a’=tt1。
[0101]
相比于异或移位操作,加法器中存在进位延时,因此制约路径延时的关键点是加法器,函数中的加法器。
[0102]
然后,采用超前进位加法器进行a’寄存器计算。
[0103]
请参考图3,图3为本技术实施例所提供的一种a’寄存器计算过程的示意图。
[0104]
可见,在计算寄存器a’时使用两输入32bit

lca(lookahead carry adder,超前进位加法器)进行计算。将多个表达式的加法运算优化拆解为多个两输入的加法运算。其中,可以按照lca的运算位数,将多个表达式中的加法运算拆解为符合32bit位计算的加法运算。
[0105]
其中,超前进位加法器的思想在于并行计算每一位的进位,在某种情况下,到达第i位的进位无需等待第i

1位进位。在常用的32比特rca中,最长的进位链为c0

>c1

>c2

>
…‑
>c32,也就是说,每一位全加器都有进位,这条路径也是最长的关键路径。
[0106]
在sm3算法中,所有涉及的加法运算都是32bit的数据加运算,因此需要实现
32bit

lca,本实施例使用11组3bit

lca级联的方式生成,使用这种方法可以降低设计难度,同时大量并行计算的方式可以优化时序,提高整体性能。
[0107]
请参考图4,图4为本技术实施例所提供的3bit

lca的结构示意图(一)。
[0108]
请参考图5,图5为本技术实施例所提供的3bit

lca的结构示意图(二)。
[0109]
请参考图6,图6为本技术实施例所提供的3bit

lca的结构示意图(三)。
[0110]
本提案只有一种3bit lca,3个图都是这个lca的一部分
[0111]
附图4表示的是3bit

lca中输出值s的第0个bit位的值和进位c的第0个bit位的值,附图5表示的是3bit

lca中输出值s的第1个bit位的值和进位c的第1个bit位的值,附图6表示的是3bit

lca中输出值s的第2个bit位的值和进位c的第2个bit位的值。
[0112]
其中:g0=a0&b0,p1=a1&b1,p2=a2&b2。
[0113]
由附图4

6可以看到,进位值c的每一个bit位只与最低进位c0有关,并不依赖于前一位的进位值,因此可以并行的将每一位进位值计算出,减小了关键路径的长度。同时,随着数据位数的增加,lca的计算复杂度也明显的增加,逻辑层级也随之增加,电路扇入扇出增大,这对时序优化是不利的。因此,最终选择使用3bit

lca,在算法性能方面可以取得较高性能。
[0114]
可见,本实施例通过采用超前进位加法器对多组数据和消息字进行迭代压缩计算,也就是在迭代压缩计算的过程中采用超前进位加法器进行计算,避免了异或移位操作中加法器存在的进位延时,提高加法器的操作效率,降低延时,提高sm3算法加密的适用性。
[0115]
下面对本技术实施例提供的sm3的数据加密装置进行介绍,下文描述的sm3的数据加密装置与上文描述的sm3的数据加密方法可相互对应参照。
[0116]
请参考图7,图7为本技术实施例所提供的一种sm3的数据加密装置的结构示意图。
[0117]
本实施例中,该装置可以包括:
[0118]
填充分组模块100,用于将接收到的明文数据进行填充分组处理,得到多组数据;
[0119]
分组扩展模块200,用于根据多组数据进行分组扩展处理,得到消息字;
[0120]
迭代压缩计算模块300,用于采用超前进位加法器对多组数据和消息字进行迭代压缩计算,得到加密数据。
[0121]
可选的,该迭代压缩计算模块,具体用于采用在关键路径设置的超前进位加法器对多组数据和消息字进行迭代压缩计算,得到加密数据;其中,超前进位加法器为在迭代压缩计算的关键路径设置的加法器,关键路径为迭代压缩计算中运算量最大的计算路径。
[0122]
可选的,该超前进位加法器为32bit超前进位加法器;
[0123]
相应的,关键路径为根据32bit超前进位加法器设置的两组并行计算的计算路径。
[0124]
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0125]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些
功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0126]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
[0127]
以上对本技术所提供的一种sm3的数据加密方法、加密数据装置、计算设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献