数据处理方法和电子设备与流程

文档序号:29910263发布日期:2022-05-06 01:11阅读:121来源:国知局
数据处理方法和电子设备与流程

1.本技术属于数据安全技术领域,尤其涉及一种数据处理方法和电子设备。


背景技术:

2.sm3是对消息产生摘要的一种算法标准,摘要长度为256bit,其安全性及效率与sha-256相当。
3.在利用sm3对消息进行处理时,sm3将消息分割成大小皆为512bit也即16word的消息块,其中,1word=4bytes,通过对消息的各消息块进行压缩处理,得到消息摘要。在对消息块进行压缩处理的过程中,为了打乱数据,sm3会先将消息块从16个word扩展成132个word,并在算法实作中将扩展得到的132个word放在内存,通过基于内存中存放的132个word执行多次迭代处理实现对消息块的压缩处理。
4.然而,上述处理方式存在算法对内存的占用量高、占用时间长,且算法处理效率低等问题,因此,提供一种优化解决方案以解决上述处理方式的至少部分缺陷,于本领域来说非常重要。


技术实现要素:

5.为此,本技术公开如下技术方案:
6.一种数据处理方法,包括:
7.获取目标消息块,将所述目标消息块拆分为第一数量的原始字作为参考字集,将所述参考字集存放于预定存储单元;
8.获取记录有初始摘要信息的第一摘要信息,所述初始摘要信息为预设信息或其他消息块的摘要信息;
9.根据所述参考字集更新所述第一摘要信息;
10.根据第一字集在所述预定存储单元中迭代更新所述参考字集,根据每次更新的所述参考字集对所述第一摘要信息进行一次更新操作,每次迭代中所述第一字集根据更新前的参考字集生成;
11.确定对所述参考字集的迭代更新满足结束条件,根据基于所述参考字集的更新所更新得到的第一摘要信息输出所述目标消息块的摘要。
12.可选的,所述将所述参考字集存放于预定存储单元,包括:
13.将所述参考字集存放于第一寄存器;
14.其中,所述第一寄存器的容量与所述参考字集的数据量对应。
15.可选的,所述将所述参考字集存放于第一寄存器,包括:
16.对所述第一数量的参考字进行分组,得到多个参考字分组;
17.按照不同参考字分组在所述目标消息块中对应的顺序,将不同的参考字分组分别存放至不同的第一寄存器;
18.其中,一个第一寄存器的容量与一个参考字分组的数据量对应,所述第一寄存器
能通过一条指令处理多个字。
19.可选的,所述根据第一字集在所述预定存储单元中迭代更新所述参考字集,包括:
20.释放所述预定存储单元中所述参考字集首部预定数量的参考字,将所述第一字集添加至所述预定存储单元中剩余参考字的尾部,得到更新后的参考字集;其中,所述预定数量为所述第一字集对应的字数。
21.可选的,所述根据第一字集在所述预定存储单元中迭代更新所述参考字集,包括:
22.释放按序存放各个参考字分组的多个第一寄存器中第一个第一寄存器中的参考字;
23.将第一个第一寄存器除外的其他各第一寄存器存放的参考字转移至对应的前一相邻第一寄存器;
24.将所述第一字集存放至各第一寄存器中最后一个第一寄存器;
25.其中,所述第一寄存器的个数为4,每个第一寄存器的容量为4个字且每个第一寄存器中所存放参考字的字数为4,所述第一字集对应的字数为4。
26.可选的,所述根据参考字集更新所述第一摘要信息,包括:
27.根据所述参考字集生成第二字集;
28.根据所述参考字集和所述第二字集更新所述第一摘要信息。
29.所述根据每次更新的所述参考字集对所述第一摘要信息进行一次更新操作,包括:
30.根据更新后的参考字集更新所述第二字集;
31.根据更新后的参考字集和更新后的第二字集更新所述第一摘要信息。
32.可选的,根据相应的参考字集和第二字集更新第一摘要信息,包括:
33.按序获取参考字集中当前待使用的一个参考字和所述第二字集中当前待使用的一个字;
34.基于预设的更新规则及获取的所述一个参考字和所述第二字集中的一个字,对当前的第一摘要信息进行更新处理,得到更新后的第一摘要信息;
35.基于按序获取的下一参考字和所述第二字集中的下一个字对第一摘要信息进行更新处理,直至所述第二字集中的字使用完毕,完成基于所述相应的参考字集和第二字集对第一摘要信息的更新。
36.可选的,上述方法,还包括:
37.将所述第一字集存放至第二寄存器;
38.将所述第二字集存放至第三寄存器;
39.其中,所述第二寄存器和所述第三寄存器能分别通过一条指令处理多个字;在根据所述第一字集更新所述预定存储单元中的参考字集时,将所述第二寄存器中的第一字集转移至所述预定存储单元。
40.可选的,所述确定对所述参考字集的迭代更新满足结束条件,根据基于所述参考字集的更新所更新得到的第一摘要信息输出所述目标消息块的摘要,包括:
41.确定对所述参考字集或所述第一摘要信息的更新次数达到对应的次数阈值,根据基于所述参考字集的更新所更新得到的第一摘要信息和所述初始摘要信息,生成所述目标消息块的摘要,并输出生成的摘要。
42.一种电子设备,包括:
43.存储器,用于至少存储一组指令集;
44.区别于所述存储器的预定存储单元;
45.处理器,用于调用并执行所述存储器中的所述指令集,通过执行所述指令集实现如上文任一项所述的数据处理方法。
46.由以上方案可知,本技术公开的数据处理方法和电子设备,针对待处理的目标消息块,将目标消息块拆分为第一数量的原始字作为参考字集,将参考字集存放于预定存储单元,并根据参考字集更新记录有初始摘要信息的第一摘要信息;在此基础上,通过对预定存储单元中的参考字集执行迭代更新,来同步式迭代更新第一摘要信息,最终在满足迭代的结束条件时基于更新得到的第一摘要信息生成并输出目标消息块的摘要,以此实现对目标消息块的压缩处理。
47.针对sm3等算法,本技术本质是通过对预定存储单元中参考字集的迭代更新实现对目标消息块的迭代式扩展,且对目标消息块的迭代式扩展,遵循消息块的压缩处理过程中对摘要信息的迭代处理进度,能有效满足sm3等算法的消息块压缩处理过程对消息块的不同扩展字的使用需求,同时避免了在压缩算法初始执行时一次性生成目标消息块的所有扩展字并将目标消息块及所有扩展字全部且全程存放至内存供压缩处理过程使用,至少能够降低对内存的占用量及占用时长,从而,实现了对sm3等算法的传统实现方式的优化。
附图说明
48.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
49.图1是本技术提供的数据处理方法的流程图;
50.图2是本技术提供的更新参考字集的实现过程流程图;
51.图3是本技术提供的更新第一摘要信息的实现过程流程图;
52.图4是sm3算法对消息块的填充规则示意图;
53.图5是sm3算法的消息摘要计算原理示意图;
54.图6是sm3算法的算法流程图;
55.图7是sm3算法的压缩函数cf的处理流程图;
56.图8是sm3算法的传统实现方式的实作过程示意图;
57.图9是本技术提供的sm3算法的实现过程示意图;
58.图10是本技术提供的电子设备的组成结构图。
具体实施方式
59.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
60.本技术公开一种数据处理方法和电子设备,用于针对sm3等需要借助内存进行数据(如消息块的各个字及为消息块扩展出来的各个字等)存放,并基于内存数据执行相关处理的算法,提供一种算法实现过程的优化解决方案,达到降低算法对内存的占用量、占用时长,和/或提升算法执行效率等目的。本技术实施例将主要以基于sm3的消息处理为例,进行方案说明。
61.本技术公开的数据处理方法,可以但不限于应用于众多通用或专用的计算装置环境或配置下的电子设备,例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置等等。
62.参见图1,示出了本技术实施例公开的数据处理方法的处理流程,如图1所示,该数据处理方法包括:
63.步骤101、获取目标消息块,将目标消息块拆分为第一数量的原始字作为参考字集,将参考字集存放于预定存储单元。
64.目标消息块可以是在基于相应算法进行消息处理时,对消息进行分割所得的各个消息块中的任一消息块。
65.以基于sm3的消息处理为例,在利用sm3对消息进行处理时,sm3将消息分割成大小皆为512bit也即16word的消息块,其中,1word=4bytes,通过对消息的各消息块进行压缩处理,得到消息摘要。该示例中,目标消息块相应可以是sm3将消息分割成的大小皆为512bit也即16word的消息块中的任一消息块。
66.实际应用中,针对待处理消息的各个消息块,可按各消息块在消息中对应的前后顺序依次获取各个消息块,并通过利用本技术方法对获取的消息块逐一处理,实现对消息的处理,如实现基于sm3对消息的摘要计算处理等。
67.本步骤101中,在获得消息当前待处理的消息块作为目标消息块后,对目标消息块按word(字)为单位进行数据拆分,将目标消息块拆分为第一数量的原始字作为参考字集,并将参考字集存放于预定存储单元。
68.可选的,预定存储单元为第一寄存器,相应将参考字集存放于第一寄存器中。本技术实施例中,第一寄存器的容量与参考字集的数据量对应,也即,第一寄存器的容量与参考字集的数据量的差值未超出预设阈值,以尽可能避免算法执行过程中对寄存器存储资源的浪费。
69.优选的,第一寄存器的容量为参考字集对应的数据量,从而最大限度地节省寄存器资源。
70.其中,针对采用第一寄存器作为预定存储单元的情况,将参考字集存放于第一寄存器的过程,可进一步实现为:
71.11)对第一数量的参考字进行分组,得到多个参考字分组;
72.12)按照不同参考字分组在目标消息块中对应的顺序,将不同的参考字分组分别存放至不同的第一寄存器。
73.其中,一个第一寄存器的容量与一个参考字分组的数据量对应,优选的,一个第一寄存器的容量为一个参考字分组的数据量,且优选的,第一寄存器为simd(single instruction multiple data,单指令流多数据流)寄存器,能通过一条指令处理多个字。
74.以基于sm3的消息处理为例,针对消息处理中大小为16word的消息块,在初始时,
参考字集中包含的第一数量的参考字相应为该消息块的16个原始字,在将其存放于simd寄存器时,具体可基于simd寄存器的实际容量对16word的消息块进行分组,假设simd寄存器的容量为4个字(还可以是其他容量,如8word的容量等,可视实际采用的simd寄存器而定),相应可将16个参考字按其在消息块中的顺序划分为4个分组,每个分组包含4个参考字,并按不同分组在该消息块中对应的顺序,将不同分组分别存放至不同的simd寄存器,共采用4个simd寄存器即可实现对16word的参考字集的存储,参考字集相应占用16word的存储空间。
75.步骤102、获取记录有初始摘要信息的第一摘要信息,初始摘要信息为预设信息或其他消息块的摘要信息。
76.具体的,如果目标消息块为待处理消息中的第一个消息块,则第一摘要信息记录的初始摘要信息为预设信息,如果目标消息块为待处理消息中的非第一个消息块,即第一个消息块除外的其他消息块,则第一摘要信息记录的初始摘要信息为目标消息块在待处理消息中对应的前相邻消息块的摘要信息。
77.步骤103、根据参考字集更新第一摘要信息。
78.具体的,可根据参考字集生成第二字集,并根据参考字集和第二字集更新第一摘要信息。
79.根据参考字集生成第二字集所基于的生成规则,由消息处理中实际采用的消息处理算法的算法要求决定,根据参考字集和第二字集更新第一摘要信息的更新规则,同样由消息处理中实际采用的消息处理算法的算法要求决定。后文实施例将以实际采用的消息处理算法为sm3为例,对生成第二字集及根据参考字集和第二字集更新第一摘要信息的过程进行详细说明。
80.步骤104、根据第一字集在预定存储单元中迭代更新参考字集,根据每次更新的参考字集对第一摘要信息进行一次更新操作,每次迭代中第一字集根据更新前的参考字集生成。
81.在将目标消息块的各个原始字作为参考字集存放于预定存储单元,并根据参考字集更新记录有初始摘要信息的第一摘要信息基础上,本技术实施例进一步执行两种类型的迭代更新处理,一种是,以第一字集为依据对预定存储单元中的参考字集执行的迭代更新,另一种是,以参考字集为依据对第一摘要信息执行的迭代更新,且两种迭代更新处理是同步的,参考字集的一次更新触发基于更新后的最新参考字集对第一摘要信息执行一次更新操作。
82.其中,每次迭代中第一字集根据更新前的参考字集生成,相类似,根据更新前的参考字集生成第一字集的生成规则,同样由消息处理中实际采用的消息处理算法(如,sm3)的算法要求决定,且针对基于sm3的消息处理,本技术实施例在上述两种迭代的同步处理过程中,针对每轮的迭代更新,生成大小为4个字的第一字集。
83.在每次基于第一字集在预定存储单元中更新参考字集时,具体可释放预定存储单元中参考字集首部预定数量的参考字,并将第一字集添加至预定存储单元中剩余参考字的尾部,得到更新后的参考字集;其中,预定数量为第一字集对应的字数,如4。
84.参见图2,针对采用第一寄存器作为预定存储单元的情况,上述基于第一字集在预定存储单元中更新参考字集的过程,可进一步实现为:
85.步骤201、释放按序存放各个参考字分组的多个第一寄存器中第一个第一寄存器中的参考字。
86.以采用4个simd寄存器——r1、r2、r3、r4,分别按序存放sm3消息处理中参考字集包括的16个字(初始时参考字集包括的具体是消息块的16个原始字)为例,每个simd寄存器的容量为4个字且每个simd寄存器所存放参考字的字数为4,该示例中,具体可释放r1中的4个字,所释放的4个字即为参考字集首部的4个参考字。
87.步骤202、将第一个第一寄存器除外的其他各第一寄存器存放的参考字转移至对应的前一相邻第一寄存器。
88.针对上述示例,基于窗口滑动思想,具体将r2中的4个字转移至r1,将r3中的4个字转移至r2,将r4中的4个字转移至r3,通过向前一相邻的第一寄存器(simd寄存器)进行数据转移,预留出最后一个第一寄存器的存储空间。
89.步骤203、将第一字集存放至各第一寄存器中最后一个第一寄存器。
90.之后,进一步将第一字集中的各个字存放至最后一个第一寄存器,例如,针对基于sm3的消息处理,具体将第一字集中的4个字存放至simd寄存器r4中,以此实现在一轮迭代更新处理中,基于第一字集在预定存储单元中更新参考字集。
91.参考字集的每次更新,触发根据每次更新后的最新参考字集对第一摘要信息执行一次更新操作,具体的,可根据更新后的参考字集更新上文所述的第二字集,并根据更新后的参考字集和更新后的第二字集更新第一摘要信息。
92.其中,参见图3,根据相应的参考字集和第二字集更新第一摘要信息的过程,具体可实现为如图3所示的处理流程:
93.步骤301、按序获取参考字集中当前待使用的一个参考字和第二字集中当前待使用的一个字。
94.步骤302、基于预设的更新规则及获取的上述一个参考字和第二字集中的一个字,对当前的第一摘要信息进行更新处理,得到更新后的第一摘要信息;
95.其中,在基于获取的上述一个参考字和第二字集中的一个字对当前的第一摘要信息进行更新处理时,所采用的更新规则,具体由消息处理中实际采用的消息处理算法(如,sm3)的算法要求决定。
96.步骤303、基于按序获取的下一参考字和第二字集中的下一个字对第一摘要信息进行更新处理,直至第二字集中的字使用完毕,完成基于上述相应的参考字集和第二字集对第一摘要信息的更新。
97.也就是说,在基于更新后的参考字集和更新后的第二字集,对第一摘要信息执行的一次更新操作中,第二字集中的每个字均参与对第一摘要信息的更新,且每个字均独立参与对第一摘要信息的一轮更新,相应在基于参考字集的一次更新而触发的对第一摘要信息的更新操作中,实际执行了多次(至少为第二字集包括的字数)对第一摘要信息的更新。
98.其中,第一字集中的各个字及第二字集中的各个字,均可视为对目标消息块进行扩展所得的各个扩展字,如sm3将消息块从16个word扩展成132个word时所对应的各个扩展字等。
99.也就是说,与sm3等算法在对消息的消息块进行压缩处理时,先将消息块从16个word扩展成132个word,之后基于存放于内存的132个word对摘要信息进行迭代更新的传统
实现方式相区别,本技术实施例在对消息的消息块进行处理时,在处理的初始阶段不执行对消息块的一次性扩展处理,而是将对消息块的一次性扩展调整为迭代式扩展,并遵循摘要信息迭代处理的进度,将对消息块的迭代式扩展与对摘要信息(第一摘要信息)的迭代更新同步执行,以此有效满足sm3等算法的消息块压缩处理过程对不同扩展字的使用需求,同时达到尽可能少的占用存储空间的目的。
100.步骤105、确定对参考字集的迭代更新满足结束条件,根据基于参考字集的更新所更新得到的第一摘要信息输出目标消息块的摘要。
101.结束条件可以但不限于设定为:对参考字集的迭代更新次数达到次数阈值,或对第一摘要信息的实际更新次数达到次数阈值。次数阈值的取值,具体可结合消息处理中实际所采用的消息处理算法的算法要求设定,以sm3算法为例,可将结束条件中对参考字集的更新次数阈值设置为13(也即是窗口滑动次数),或将结束条件中对第一摘要信息的更新次数阈值设置为64。
102.需要说明的是,在基于参考字集的一次更新而触发的对第一摘要信息的更新操作中,实际执行了多次(至少为第二字集包括的字数)对第一摘要信息的更新,这里针对第一摘要信息所设定的更新次数阈值,是针对算法中第一摘要信息的实际更新次数情况所设置的阈值。
103.基于上述结束条件,在对参考字集及第一摘要信息的同步式迭代更新处理中,判定对参考字集/第一摘要信息的更新次数是否达到对应的次数阈值,若达到,则结束更新,否则,则继续对应的更新处理。
104.且在结束对参考字集/第一摘要信息的更新处理情况下,进一步根据基于参考字集的更新所更新得到的第一摘要信息和更新前第一摘要信息中的初始摘要信息,生成目标消息块对应的摘要,并输出生成的摘要。
105.生成并输出的目标消息块的摘要,用于作为中间数据,参与目标消息块所属消息的摘要信息的计算过程,以最终计算得到目标消息块所属消息的摘要。
106.在一实施方式中,可选的,除了采用第一寄存器存放参考字集,还可以分别采用第二寄存器、第三寄存器存放第一字集和第二字集,也即,将第一字集存放至第二寄存器,将第二字集存放至第三寄存器。第二寄存器和第三寄存器同样可以是能分别通过一条指令处理多个字的simd寄存器。
107.该实施方式中,在根据第一字集更新预定存储单元中的参考字集时,相应将第二寄存器中的第一字集转移至预定存储单元(如,转移至多个第一寄存器中的最后一个第一寄存器),在根据参考字集的更新而更新第二字集时,相应基于新生成的第二字集直接替换第三寄存器中存放的已有第二字集。
108.在基于sm3的消息处理中,针对容量为4word的simd寄存器,第一字集及第二字集的数据量可分别为4个字。
109.由以上方案可知,本技术实施例的方法,针对待处理的目标消息块,将目标消息块拆分为第一数量的原始字作为参考字集,将参考字集存放于预定存储单元,并根据参考字集更新记录有初始摘要信息的第一摘要信息;在此基础上,通过对预定存储单元中的参考字集执行迭代更新,来同步式迭代更新第一摘要信息,最终在满足迭代的结束条件时基于更新得到的第一摘要信息生成并输出目标消息块的摘要,以此实现对目标消息块的压缩处
理。
110.针对sm3等算法,本技术本质是通过对预定存储单元中参考字集的迭代更新实现对目标消息块的迭代式扩展,且对目标消息块的迭代式扩展,遵循消息块的压缩处理过程中对摘要信息的迭代处理进度,能有效满足sm3等算法的消息块压缩处理过程对消息块的不同扩展字的使用需求,同时避免了在压缩算法初始执行时一次性生成目标消息块的所有扩展字并将目标消息块及所有扩展字全部且全程存放至内存供压缩处理过程使用,能够降低对内存的占用量及占用时长;另外,本技术实施例通过采用simd寄存器作为第一寄存器提供数据存放空间,能通过一条指令处理多个字,从而降低了算法执行过程中的io次数,相应可进一步提升sm3等算法的执行效率,实现了对sm3等算法的传统实现方式的优化。
111.以下针对基于sm3的消息处理,提供本技术数据处理方法的一应用示例。
112.在利用sm3对消息进行处理时,sm3首先将消息分割成大小皆为512bit也即16word的消息块,如果最后一块数据块不足512bit,采用设定的填充规则对其进行填充处理,补足512bit。
113.填充规则如图4所示,假设数据块x的数据长度l<512bit,则在数据块x的尾部依次填充1个bit的“1”、k个bit的“0”,以及在最后的64bit填充数据块x的数据长度值l,其中,l+1+k=448,且k为(448-l-1)mod 512的最小非负整数,基于k的上述取值,有l+1+k+64=512,从而实现将数据块x补足为512bit。
114.sm3算法流程中,在将消息分割成大小皆为512bit也即16word的消息块后,按序读取各个消息块,并针对读取的每个消息块,利用压缩函数cf对其进行压缩处理,得到消息块对应的摘要,最终基于消息块对应的摘要计算得到整个消息的摘要。
115.具体如图5所示的基于cf的消息摘要计算原理,针对消息的第1个消息块b0,对初始摘要信息(记录在第一摘要信息中)进行初始化,如预设初始摘要信息v0=iv,并将预设的初始摘要信息v0及消息块b0输入压缩函数cf,得到压缩函数cf输出的v1,即为消息块b0的摘要,之后,再将v1连同第2个消息块b1输入压缩函数cf,得到v2作为消息块b1的摘要,确切而言,v2本质为消息块b1及b1之前所有消息块构成的总块(即b0+b1)的摘要,如此迭代,直至最后产生消息的最后一个消息块b
n-1
对应的摘要vn,就是整个消息的摘要。
116.其中,压缩函数主要目的,是将512bit的消息块压缩成256bit,压缩过程中,为了打乱数据,要求将消息块从16个word扩展成132个word,132个word分别如下:
117.w0~w
15
:对消息块进行拆分所得的消息块的16个原始字;
118.w
16
~w
67
:w
16
~w
67
中的每个wj为通过对wj的前16个word中的相应word进行计算处理得到的扩展字;
119.w'0~w'
63
:w'0~w'
63
中的每个w'j为通过对对应的wj与w
j+4
进行计算处理得到的扩展字。
120.参见图6提供的sm3算法流程,压缩函数cf的算法过程分为以下4个步骤:
121.21)消息块展开;
122.即,对消息块的扩展处理,传统技术将消息块从16个word扩展成132个word。
123.22)abcdefgh赋值;
124.a~h的取值,分别为对第一摘要信息按bit位序进行分块所得的各个bit块,对于消息的第一个消息块,如图5中的消息块b0,a~h的取值分别为按bit位序对摘要v0进行分块
所得的8个bit块,对于非第一个消息块(如b1),a~h的取值分别为按bit位序对该消息块的前一相邻消息块对应的摘要(如v1)进行分块所得的8个bit块。
125.23)计算中间值tt1,tt2;
126.24)更新abcdefgh。
127.sm3算法将消息块从16个word扩展成132个word的更详细的处理,以及压缩函数cf的更详细的处理,具体可分别参见图7的压缩函数cf流程提供的相应算法过程。
128.其中,图7所提供的相应算法中的ss1、ss2为两个变量,ffj、ggj均为sm3中的布尔函数,p0是压缩函数中的置换函数,p1为消息扩展中的置换函数,这些均为sm3算法自带的变量/函数。通过利用这些变量或函数不断对abcdefgh进行迭代式更新,实现将abcdefgh的信息打乱,也即实现对第一摘要信息的迭代更新,最终结合迭代更新后的abcdefgh以及第一摘要信息中的初始摘要信息(即迭代更新前的abcdefgh对应的摘要信息)实现对消息块的摘要计算。
129.待处理消息的每个消息块是512个bit,也就是16个word,sm3的传统实现方式中,首先经由步骤21)将16个word扩展为132个word,并将132个word放在内存,而后续的步骤22)-24),需执行64轮,通过执行64轮步骤22)-24)的处理,实现对abcdefgh(即第一摘要信息)的迭代更新,每轮均是在cpu、general registers(通用寄存器)、memory(内存)之间执行相关io交互与运算,其具体实作过程如图8所示,该实现方式中,内存占用量高、占用时间长,且io交互复杂、算法执行效率低下。
130.本示例基于本技术提供的数据处理方法,借由窗口滑动和simd指令实现基于压缩函数cf的消息块摘要计算,来提升sm3的执行性能。
131.参见图9,示意性提供了该示例中借由窗口滑动和simd指令实现消息块摘要计算的计算原理,该实现消息块摘要计算的过程具体包括:
132.31)将消息块拆分成w0~w
15
,共16个word,并将w0~w
15
分为4组,按序存放到4个simd寄存器中:g0、g4、g8、g12;
133.32)将存放在g0和g4的8个wj,经由sm3运算后产生对应的4个w'j,如根据g0和g4的w0~w7经由sm3运算后产生w'0~w'3,即4个word的第二字集,并存放至simd寄存器t0;
134.33)利用simd寄存器t0存放的4个w'j,依序进行4次运算,每次用当前对应的wj和w'j计算中间值tt1和tt2,并基于中间值tt1和tt2更新abcdefgh;
135.34)将存放在g0、g4、g8、g12中的16个wj,经由sm3运算后,产生对应的4个wj,如将存放在g0、g4、g8、g12中的w0~w
15
经由sm3运算后产生w
16
~w
19
,即4个word的第一字集,并存放至simd寄存器g16;
136.35)进行下一轮运算,将g4、g8、g12、g16所存放的16个wj,如w4~w
19
,依次前移一个寄存器,搬移到g0、g4、g8、g12,即执行步长为4word的窗口滑动操作,然后转至执行步骤32),实现对abcdefgh的迭代更新。
137.其中,滑动窗口的大小为16word。
138.需要说明的是,对于最后一个窗口,即w
52
~w
67
,除了将存放在g0和g4的8个wj,经由sm3运算后产生对应的4个w'j,并依序进行4次运算更新abcdefgh,还需将存放在g4和g8的8个wj,经由sm3运算后产生对应的4个w'j,以及将存放在g8和g12的8个wj,经由sm3运算后产生对应的4个w'j,并针对每次产生的4个w'j,依序进行4次运算以更新abcdefgh。
139.36)在满足结束条件,如基于64个w'j将abcdefgh更新64次后,得到更新后的abcdefgh,基于更新后的abcdefgh和利用64个w'j对abcdefgh进行更新前的abcdefgh对应的摘要,计算得到当前消息块的摘要,
140.其中,满足结束条件时,所得的更新后的abcdefgh构成的整体信息,即为完成更新的第一摘要信息,基于64个w'j对abcdefgh进行更新前的abcdefgh对应的摘要,即为第一摘要信息中记录的初始摘要信息,具体为预设信息或当前消息块的前一相邻消息块对应的摘要信息。
141.在基于sm3的消息处理中,针对容量为4word的simd寄存器,本示例共采用6个simd寄存器(g0、g4、g8、g12、g16和t0),即24word的存储空间,即可满足sm3算法对消息块进行压缩处理的整个执行过程的存储空间需求,与传统技术需占用132个word的内存空间相比,本技术借由窗口滑动基于迭代更新方式大幅降低了对存储空间的占用量及占用时长,同时,通过采用simd寄存器基于simd指令,进一步降低了算法执行过程中的io次数,相应提升了算法执行效率。
142.实际应用本技术方法时,可通过搭配窗口滑动算法和simd寄存器,为sm3算法设计与本技术技术思路相适配的sm3指令集,并基于该指令集重构sm3算法的实现过程,来对sm3算法加以实施。
143.本技术实施例还公开一种电子设备,该电子设备可以是但不限于众多通用或专用的计算装置环境或配置下的设备,例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置等等。该电子设备的组成结构如图10所示,具体包括:
144.存储器10,用于存放计算机指令集;
145.计算机指令集可以通过计算机程序的形式实现。
146.处理器20,用于通过执行计算机指令集,实现如上文任一方法实施例公开的数据处理方法。
147.处理器20可以为中央处理器(central processing unit,cpu),特定应用集成电路(application-specific integrated circuit,asic),数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件等。
148.除此之外,电子设备还可以包括通信接口、通信总线等组成部分。存储器、处理器和通信接口通过通信总线完成相互间的通信。
149.通信接口用于电子设备与其他设备之间的通信。通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等,该通信总线可以分为地址总线、数据总线、控制总线等。
150.综上所述,本技术公开的数据处理方法和电子设备,与传统技术相比,至少具备以下技术优势:
151.41)在对消息块进行压缩处理的过程中,将数据存放至simd寄存器,以及基于窗口滑动技术进行simd寄存器更新,只需要较少的数据存储空间(如针对sm3算法,仅需24个word的存储空间),即可满足算法要求,节省了对内存空间的占用量及占用时长;
152.42)针对存放于simd寄存器的各个word(如,24个word),使用simd指令对其进行io及与其它变量的运算处理,提升了算法执行速率;
153.43)在基于本技术的技术思路,搭配窗口滑动算法及simd指令,对sm3等算法的指令集进行设计时,设计难度较低,从而,本技术方法的实施复杂度低,简单易实施。
154.需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
155.为了描述的方便,描述以上系统或装置时以功能分为各种模块或单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
156.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例或者实施例的某些部分所述的方法。
157.最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
158.以上所述仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1