CN103812641A - 一种实现sm4分组对称密码算法的*** - Google Patents
一种实现sm4分组对称密码算法的*** Download PDFInfo
- Publication number
- CN103812641A CN103812641A CN201210441335.8A CN201210441335A CN103812641A CN 103812641 A CN103812641 A CN 103812641A CN 201210441335 A CN201210441335 A CN 201210441335A CN 103812641 A CN103812641 A CN 103812641A
- Authority
- CN
- China
- Prior art keywords
- data
- key
- control signal
- encryption
- input
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种实现SM4分组对称密码算法的***,包括:输入密钥处理及结果存储器,用于对输入密钥进行处理,得到直接参与迭代运算的结果,并进行存储;密钥缓存器,用于根据控制模块输出的控制信号更新和存储密钥扩展运算的中间结果,即加密运算需要的轮密钥;数据缓存器,用于根据控制模块输出的控制信号更新和存储加解密迭代运算的中间结果;数据处理选择模块,用于根据控制模块输出的控制信号,选择参与运算的数据为密钥还是加解密的数据;运算逻辑模块,用于进行加解密运算和密钥扩展运算;控制模块,用于根据输入的工作模式控制信号,输出相应的加解密控制信号和密钥扩展控制信号。利用本发明,使得***冗余度得到降低。
Description
技术领域
本发明涉及分组密码算法技术领域,尤其是一种实现SM4分组对称密码算法的***。
背景技术
SM4分组对称密码算法即原SMS4算法,它是国内公布的第一个用于无线局域网产品的商用密码算法,该算法是我国首个公开针对特殊领域的密码算法,对无线局域网产业和商用密码研究都有重要的意义。SM4是基于S盒的分组对称密码算法,它对一组比特数据进行加解密运算,而不像流密码那样只针对单个比特运算。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反。
加密算法主要为读入加密数据和密钥进行加密运算的过程。算法的加密变换包含异或运算和合成置换T运算,其中合成置换T运算是由线性变换L和非线性变换τ复合而成,即T(·)=L(τ(·))。非线性变换τ由4个并行的S盒构成,S盒是固定的8比特输入8比特输出的变换;线性变换L包含异或运算和循环左移运算。
对密钥扩展算法而言,加密算法中的轮密钥是加密密钥MK通过密钥扩展算法生成。而该扩展算法基本结构与加解密算法相同,同样包含异或运算和合成置换T’运算。其中合成置换T’运算与加密算法中的合成置换T运算基本相同,仅仅将其中的线性变换L修改为L’,线性变化L’同样包含异或运算和左移运算,形式略有不同。
实现SM4算法的加解密***在现有技术中存在多种方案,但这些方案大多基于以下架构,如图1所示,现有技术中一个标准SM4加解密***包括:密钥扩展模块、控制模块和加解密模块。以加密操作为例,首先由密钥扩展模块读入加密密钥MK、***参数FK和固定参数CK,其中FK和CK是固定值,读入的所有参数经过32轮迭代运算产生32个轮密钥并存储。当有明文进入加解密模块,则加密运算启动,并在每轮迭代中读入相应轮密钥,直至完成32轮迭代加密操作,最终输出密文。不同方案的区别在于加解密模块的实现上。
但从***全局的结构考虑,加解密模块和密钥扩展模块在功能上有较大的相似性,使用两个模块实现***的功能使得***的部件冗余度较高。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种实现SM4分组对称密码算法的***,以降低***部件的冗余度。
(二)技术方案
为达到上述目的,本发明提供了一种实现SM4分组对称密码算法的***,包括:
输入密钥处理及结果存储器,用于对输入密钥进行处理,得到直接参与迭代运算的结果,并进行存储;
密钥缓存器,用于根据控制模块输出的控制信号更新和存储密钥扩展运算的中间结果,即加密运算需要的轮密钥;
数据缓存器,用于根据控制模块输出的控制信号更新和存储加解密迭代运算的中间结果;
数据处理选择模块,用于根据控制模块输出的控制信号,选择参与运算的数据为密钥还是加解密的数据;
运算逻辑模块,用于进行加解密运算和密钥扩展运算;以及
控制模块,用于根据输入的工作模式控制信号,输出相应的加解密控制信号和密钥扩展控制信号。
上述方案中,所述输入密钥处理及结果存储器包括运算部件以及存储单元,当接收到密钥时,该运算部件将该密钥与固定常数进行运算,得到直接参与密钥扩展算法进行迭代运算的数据,并将该数据存储于该存储单元中。
上述方案中,所述密钥缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储密钥扩展迭代运算得到的中间结果。
上述方案中,所述数据缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储数据加解密迭代运算得到的中间结果。
上述方案中,所述数据处理选择模块为一个数据选择器,用于选择输入到运算逻辑模块的数据是加解密数据还是密钥扩展数据,如果控制模块输出的是加解密控制信号,则输入到运算逻辑模块的数据是加解密数据;如果控制模块输出的是密钥扩展信号,则输入到运算逻辑模块的数据是密钥扩展数据。
上述方案中,所述运算逻辑模块包括轮密钥运算所需常数生成部件、第一运算部件、S盒部件、循环移位部件以及第二运算部件,其中:
所述轮密钥运算所需常数生成部件,用于根据控制逻辑输出的控制信号,按照相应的数学原理生成轮密钥生成时所需的常数;
所述第一运算部件,用于完成加解密数据与轮密钥进行的异或运算,或者密钥数据与生成轮密钥所需常数的异或运算;
所述S盒部件,用于在加解密模式或轮密钥扩展模式时对数据进行S盒查表运算;
所述循环移位部件,用于完成循环移位与异或运算;
所述循环移位部件,用于先对输入数据进行循环左移2、10、18、24、13、23位,循环左移2、10、18、24位所得的数据输入数据相异或得到输出结果A,循环左移13、23位所得到的数据与输入数据相异或得到输出结果B;
所述第二运算部件,用于对所述循环移位部件的输出结果A与数据缓存器中相应的数据相异或得到A’,对所述循环移位部件的输出结果B与密钥缓存器中相应的数据相异或得到B’。
上述方案中,所述第二运算部件的输出A’与B’在控制模块输出的控制信号下分别存入数据缓存器或密钥缓存器。
上述方案中,所述控制模块根据输入的工作模式信号产生相应的加密运算控制信号和解密运算控制信号,实现加密运算过程和解密运算过程。
上述方案中,所述加密运算过程为:加密运算开始时,输入的128位明文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器模块;密钥缓存器仅有128位,采取不存储所有轮密钥,而是每轮加密前先计算轮密钥的方式工作;控制模块控制***交替进行轮密钥的生成与数据块的加密,一组数据的加密通过64轮迭代完成。
上述方案中,所述解密运算过程为:SM4为对合运算,加密过程与解密过程使用相同的密钥;假设加密过程轮密钥的使用顺序为rk0~rk31,解密时轮密钥的使用顺序为rk31~rk0;解密运算开始时,128位密文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器;先由输入密钥通过32轮迭代计算出{rk31,rk30,rk29,rk28},在此过程中只进行密钥扩展运算,不进行数据解密运算;之后,可由{rk31,rk30,rk29,rk28}反推得到rk27~rk0,在此过程中轮密钥的生成与数据的解密交替进行;整个解密过程通过96轮迭代完成。
(三)有益效果
本发明提供的实现SM4分组对称密码算法的***,基于模块复用的思想,仅使用一个运算模块就可完成加解密运算和轮密钥扩展运算;利用了密钥扩展运算的正反递推性质,只存储初始密钥,不存储轮密钥,省去了32轮轮密钥占用的大量资源;基于以上所述思想和性质,使得***冗余度得到降低。
附图说明
图1为现有技术中一个标准SM4加解密***的示意图;
图2为本发明提供的实现SM4分组对称密码算法的***的结构示意图;
图3是基于本发明提供的实现SM4分组对称密码算法的***进行加密过程的流程图;
图4是基于本发明提供的实现SM4分组对称密码算法的***进行解密过程的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
SM4算法是国内应用于无线局域网领域的重要商用密码算法,其中加解密算法和密钥扩展算法都采用32轮非线性迭代结构。解密算法和加密算法的结构相同,只是轮密钥的使用顺序相反。
下面对加解密算法进行简要介绍:
(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32) (2)
(b0,b1,b2,b3)=τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3))(3)
其中,Sbox为固定的映射表。
SM4解密过程与加密过程相同,只是轮密钥的使用次序相反,即解密过程为:
该算法中加密算法的轮密钥由加密密钥通过密钥扩展算法生成。
令i=0,1,...,35,轮密钥为i=0,1,...,31,则轮密钥生成方法为:
首先:
然后,对i=0,1,...,31:
其中,T’变换与加密算***函数中的T变换基本相同,只将其中的线性变换L修改为L’:
式(7)中的参数FK与式(9)中的参数CK均为固定值。FK0=(A3B1BAC6),FK1=(56AA3350),FK2=(677D9197),FK3=(B27022DC)。CK可以通过计算得到:
设cki,j是CKi的第j个字节,其中i=0,1,...,31;j=0,1,2,3,即 则:cki,j=(4i+j)×7(mod256) (10)
从加解密算法和密钥扩展算法的介绍中可以看出,加解密模块和密钥扩展模块存在较多功能相同的部件,可以从模块复用角度来降低***冗余度;并且轮密钥运算和加解密运算在时间上存在先后性,可以通过功能切换实现模块复用。
本发明提出的分组加密算法SM4的低复杂度实现***,具体包括:输入密钥处理及结果存储器、密钥缓存器、数据缓存器、数据处理选择模块、运算逻辑模块和控制模块。其中:输入密钥处理及结果存储器用于对输入密钥进行处理,得到直接参与迭代运算的结果,并进行存储;密钥缓存器用于根据控制模块输出的控制信号更新和存储密钥扩展运算的中间结果,即加密运算需要的轮密钥;数据缓存器用于根据控制模块输出的控制信号更新和存储加解密迭代运算的中间结果;数据处理选择模块用于根据控制模块输出的控制信号,选择参与运算的数据为密钥还是加解密的数据;运算逻辑模块用于进行加解密运算和密钥扩展运算;控制模块用于根据输入的工作模式控制信号,输出相应的加解密控制信号和密钥扩展控制信号。本发明提出的***既支持一组密钥多组数据的加解密工作模式,也支持每组加解密的数据与密钥同时更新的工作模式。
输入密钥处理及结果存储器包括运算部件以及存储单元,当接收到密钥时,该运算部件将该密钥与固定常数进行运算,得到直接参与密钥扩展算法进行迭代运算的数据,并将该数据存储于该存储单元中。
密钥缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储密钥扩展迭代运算得到的中间结果。
数据缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储数据加解密迭代运算得到的中间结果。
数据处理选择模块为一个数据选择器,用于选择输入到运算逻辑模块的数据是加解密数据还是密钥扩展数据,如果控制模块输出的是加解密控制信号,则输入到运算逻辑模块的数据是加解密数据;如果控制模块输出的是密钥扩展信号,则输入到运算逻辑模块的数据是密钥扩展数据。
运算逻辑模块包括轮密钥运算所需常数生成部件、第一运算部件、S盒部件、循环移位部件以及第二运算部件,其中:所述轮密钥运算所需常数生成部件,用于根据控制逻辑输出的控制信号,按照相应的数学原理生成轮密钥生成时所需的常数;所述第一运算部件,用于完成加解密数据与轮密钥进行的异或运算,或者密钥数据与生成轮密钥所需常数的异或运算;所述S盒部件,用于在加解密模式或轮密钥扩展模式时对数据进行S盒查表运算;所述循环移位部件,用于完成循环移位与异或运算;所述循环移位部件,用于先对输入数据进行循环左移2、10、18、24、13、23位,循环左移2、10、18、24位所得的数据输入数据相异或得到输出结果A,循环左移13、23位所得到的数据与输入数据相异或得到输出结果B;所述第二运算部件,用于对所述循环移位部件的输出结果A与数据缓存器中相应的数据相异或得到A’,对所述循环移位部件的输出结果B与密钥缓存器中相应的数据相异或得到B’。第二运算部件的输出A’与B’在控制模块输出的控制信号下分别存入数据缓存器或密钥缓存器。
控制模块根据输入的工作模式信号产生相应的加密运算控制信号和解密运算控制信号,实现加密运算过程和解密运算过程。
实施例1,如图3所示,加密运算过程:
当***接收到密钥时,密钥进入输入密钥处理及结果存储器,输入密钥MK=(MK0,MK1,MK2,MK3)与***常数(FK0,FK1,FK2,FK3)完成运算
为方便描述,记数据缓存器的128比特从高位到低位为(XR0,XR1,XR2,XR3),密钥缓存器的128比特从高位到低位为(KR0,KR1,KR2,KR3)。
当控制模块接收到工作使能信号时,根据工作模式信号与加解密信号发出相应的控制信号。当为加密运算时,***首先将输入明文(X0,X1,X2,X3)载入数据缓存器(XR0,XR1,XR2,XR3),将输入密钥处理及结果存储器中的数据(K0,K1,K2,K3)载入密钥缓存器(KR0,KR1,KR2,KR3)。之后,控制模块发出计算第1轮轮密钥的控制信号,数据处理选择模块选择密钥缓存器(KR0,KR1,KR2,KR3)中的数据(K0,K1,K2,K3)进入运算逻辑模块。此时,运算逻辑模块中的CK常数生成器根据控制信号生成CK0。第一运算部件完成运算运算结果A进入S盒部件完成非线性变换τ,得到输出结果B。B进入循环移位运算部件完成循环移位与异或运算得到
C与C’进入第二异或部件与XR0,KR0中的数据进行运算,得到
最后控制模块发出的控制信号选择D’(即K4或者rk0)送入密钥缓存器,同时密钥缓存器(KR0,KR1,KR2,KR3)的数据更新为(K1,K2,K3,K4(D’))。此时,第1轮加密运算所需的轮密钥rk0已经准备好,可以进行第1轮数据加密。
第1轮加密运算所需的轮密钥rk0生成之后,控制模块发出控制信号进行第1轮加密运算。此时,数据处理选择模块选择数据缓存器(XR0,XR1,XR2,XR3)中的数据(X0,X1,X2,X3)进入运算逻辑模块。第一运算部件完成运算运算结果A进入S盒部件完成非线性变换τ,得到输出结果B。B进入循环移位运算部件完成循环移位与异或运算得到
C与C’进入第二异或部件与XR0,KR0中的数据进行运算,得到 最后控制模块发出的控制信号选择D(即X4)送入数据缓存器,同时数据缓存器(XR0,XR1,XR2,XR3)的数据更新为(X1,X2,X3,X4)。此时,加密运算的第1轮迭代完成。
重复上述加密运算过程31次,完成数据的32轮迭代加密运算。
当一组数据完成加密之后,控制模块发出控制信号将输入明文(X0,X1,X2,X3)载入数据缓存器,将输入密钥处理及结果存储器中的数据载入密钥缓存器。输入密钥处理及结果存储器中的数据可以是之前的密钥处理结果,此时***工作在一组密钥多组数据的加密工作模式;输入密钥处理及结果存储器中的数据也可以是新输入密钥的处理结果,此时***工作在每组加解密的数据与密钥同时更新的工作模式。
实施例2,如图4所示,解密运算过程:
当***接收到密钥时,密钥进入输入密钥处理及结果存储器,输入密钥MK=(MK0,MK1,MK2,MK3)与(FK0,FK1,FK2,FK3)完成运算
当控制模块接收到工作使能信号时,根据工作模式信号与加解密信号发出相应的控制信号。当为解密运算时,***首先将输入明文(X0,X1,X2,X3)载入数据缓存器(XR0,XR1,XR2,XR3),将输入密钥处理及结果存储器中的数据(K0,K1,K2,K3)载入密钥缓存器(KR0,KR1,KR2,KR3)。之后,控制模块发出计算第1轮轮密钥的控制信号,数据处理选择模块选择密钥缓存器中的数据(K0,K1,K2,K3)进入运算逻辑模块。此时,运算逻辑模块中的CK常数生成器根据控制信号生成CK0。第一运算部件完成运算运算结果A进入S盒部件完成非线性变换τ,得到输出结果B。B进入循环移位运算部件完成循环移位与异或运算得到
C与C’进入第二异或部件与XR0,KR0中的数据进行运算,得到 最后控制模块发出的控制信号选择D’(即K4或者rk0)送入密钥缓存器,同时密钥缓存器(KR0,KR1,KR2,KR3)中的数据更新为(K1,K2,K3,K4(D’))。此时,得到了第1轮加密运算所需的轮密钥rk0。
重复上述获取加密运算所需轮密钥的过程31次,得到第32轮轮密钥rk31。此时,密钥缓存器(KR0,KR1,KR2,KR3)中的数据为(rk28,rk29,rk30,rk31),即(K32,K33,K34,K35)。
得到轮密钥rk31之后,控制模块发出控制信号进行第1轮解密运算。此时,数据处理选择模块选择数据缓存器中的数据(X0,X1,X2,X3)进入运算逻辑模块,第一运算部件完成运算运算结果A进入S盒部件完成非线性变换τ,得到输出结果B,B进入循环移位运算部件完成循环移位与异或运算得到
C与C’进入第二异或部件与XR0,KR4中的数据进行运算,得到 最后控制模块发出的控制信号选择D(即X4)送入数据缓存器,同时数据缓存器的数据更新为(X1,X2,X3,X4)。此时,解密运算的第1轮迭代完成。
解密运算的第1轮迭代完成之后,控制模块发出控制信号进行轮密钥扩展运算。数据处理选择模块选择密钥缓存器(KR0,KR1,KR2,KR3)中的数据(K32,K33,K34,K35)进入运算逻辑模块。此时,运算逻辑模块中的CK常数生成器根据控制信号生成CK31,第一运算部件完成运算运算结果A进入S盒部件完成非线性变换τ,得到输出结果B,B进入循环移位运算部件完成循环移位与异或运算得到
C与C’进入第二异或部件与XR0,KR4中的数据进行运算,得到 最后控制模块发出的控制信号选择D’(即rk27或K31)送入密钥缓存器,同时密钥缓存器的数据更新为(rk27,rk28,rk29,rk30),即(K31,K32,K33,K34)。
重复上述的迭代解密过程31次,完成数据的32轮迭代解密。
当一组数据完成解密之后,控制模块发出控制信号将输入密文(X0,X1,X2,X3)载入数据缓存器,将输入密钥处理及结果存储器中的数据载入密钥缓存器。输入密钥处理及结果存储器中的数据可以是之前的密钥处理结果,此时***工作在一组密钥,多组数据的解密工作模式;输入密钥处理及结果存储器中的数据也可以是新输入密钥的处理结果,此时***工作在每组解密的数据与密钥同时更新的工作模式。
在现有技术中,由于实现SM4算法的加解密***的面积主要由加解密模块、轮密钥扩展模块以及轮密钥存储单元决定。本实施例采用模块复用的思想,仅使用一个运算模块来实现加解密运算和轮密钥扩展运算,省去了轮密钥存储单元,与现有技术使用加解密模块和轮密钥扩展模块以及轮密钥存储单元相比,成功地降低了部件冗余度。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种实现SM4分组对称密码算法的***,包括:
输入密钥处理及结果存储器,用于对输入密钥进行处理,得到直接参与迭代运算的结果,并进行存储;
密钥缓存器,用于根据控制模块输出的控制信号更新和存储密钥扩展运算的中间结果,即加密运算需要的轮密钥;
数据缓存器,用于根据控制模块输出的控制信号更新和存储加解密迭代运算的中间结果;
数据处理选择模块,用于根据控制模块输出的控制信号,选择参与运算的数据为密钥还是加解密的数据;
运算逻辑模块,用于进行加解密运算和密钥扩展运算;以及
控制模块,用于根据输入的工作模式控制信号,输出相应的加解密控制信号和密钥扩展控制信号。
2.根据权利要求1所述的实现SM4分组对称密码算法的***,其特征在于,所述输入密钥处理及结果存储器包括运算部件以及存储单元,当接收到密钥时,该运算部件将该密钥与固定常数进行运算,得到直接参与密钥扩展算法进行迭代运算的数据,并将该数据存储于该存储单元中。
3.根据权利要求1所述的实现SM4分组对称密码算法的***,其特征在于,所述密钥缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储密钥扩展迭代运算得到的中间结果。
4.根据权利要求1所述的实现SM4分组对称密码算法的***,其特征在于,所述数据缓存器包括一组存储单元,用于根据控制模块输出的控制信号更新和存储数据加解密迭代运算得到的中间结果。
5.根据权利要求1所述的实现SM4分组对称密码算法的***,其特征在于,所述数据处理选择模块为一个数据选择器,用于选择输入到运算逻辑模块的数据是加解密数据还是密钥扩展数据,如果控制模块输出的是加解密控制信号,则输入到运算逻辑模块的数据是加解密数据;如果控制模块输出的是密钥扩展信号,则输入到运算逻辑模块的数据是密钥扩展数据。
6.根据权利要求1所述的实现SM4分组对称密码算法的***,其特征在于,所述运算逻辑模块包括轮密钥运算所需常数生成部件、第一运算部件、S盒部件、循环移位部件以及第二运算部件,其中:
所述轮密钥运算所需常数生成部件,用于根据控制逻辑输出的控制信号,按照相应的数学原理生成轮密钥生成时所需的常数;
所述第一运算部件,用于完成加解密数据与轮密钥进行的异或运算,或者密钥数据与生成轮密钥所需常数的异或运算;
所述S盒部件,用于在加解密模式或轮密钥扩展模式时对数据进行S盒查表运算;
所述循环移位部件,用于完成循环移位与异或运算;
所述循环移位部件,用于先对输入数据进行循环左移2、10、18、24、13、23位,循环左移2、10、18、24位所得的数据输入数据相异或得到输出结果A,循环左移13、23位所得到的数据与输入数据相异或得到输出结果B;
所述第二运算部件,用于对所述循环移位部件的输出结果A与数据缓存器中相应的数据相异或得到A’,对所述循环移位部件的输出结果B与密钥缓存器中相应的数据相异或得到B’。
7.根据权利要求6所述的实现SM4分组对称密码算法的***,其特征在于,所述第二运算部件的输出A’与B’在控制模块输出的控制信号下分别存入数据缓存器或密钥缓存器。
8.根据权利要求1所述的实现SM4分组对称密码算法的***,其特征在于,所述控制模块根据输入的工作模式信号产生相应的加密运算控制信号和解密运算控制信号,实现加密运算过程和解密运算过程。
9.根据权利要求8所述的实现SM4分组对称密码算法的***,其特征在于,所述加密运算过程为:
加密运算开始时,输入的128位明文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器模块;密钥缓存器仅有128位,采取不存储所有轮密钥,而是每轮加密前先计算轮密钥的方式工作;控制模块控制***交替进行轮密钥的生成与数据块的加密,一组数据的加密通过64轮迭代完成。
10.根据权利要求9所述的实现SM4分组对称密码算法的***,其特征在于,所述解密运算过程为:
SM4为对合运算,加密过程与解密过程使用相同的密钥;假设加密过程轮密钥的使用顺序为rk0~rk31,解密时轮密钥的使用顺序为rk31~rk0;解密运算开始时,128位密文直接载入数据缓存器,输入密钥处理及结果存储器中存储的数据载入密钥缓存器;先由输入密钥通过32轮迭代计算出{rk31,rk30,rk29,rk28},在此过程中只进行密钥扩展运算,不进行数据解密运算;之后,可由{rk31,rk30,rk29,rk28}反推得到rk27~rk0,在此过程中轮密钥的生成与数据的解密交替进行;整个解密过程通过96轮迭代完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210441335.8A CN103812641A (zh) | 2012-11-07 | 2012-11-07 | 一种实现sm4分组对称密码算法的*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210441335.8A CN103812641A (zh) | 2012-11-07 | 2012-11-07 | 一种实现sm4分组对称密码算法的*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103812641A true CN103812641A (zh) | 2014-05-21 |
Family
ID=50708891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210441335.8A Pending CN103812641A (zh) | 2012-11-07 | 2012-11-07 | 一种实现sm4分组对称密码算法的*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103812641A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104579636A (zh) * | 2015-02-16 | 2015-04-29 | 滨州职业学院 | 一种超高速实现sm4算法的***及其运行方法 |
CN105306195A (zh) * | 2014-07-22 | 2016-02-03 | 英特尔公司 | Sm4加速处理器、方法、***和指令 |
CN105447417A (zh) * | 2015-11-06 | 2016-03-30 | 天津津航计算技术研究所 | 一种应用于高速数据存储的硬件加密方法 |
CN106209349A (zh) * | 2016-08-31 | 2016-12-07 | 福建联迪商用设备有限公司 | 基于3des算法的数据加密方法和装置 |
CN106230858A (zh) * | 2016-09-05 | 2016-12-14 | 烟台大学 | 工业数据加密传输方法 |
CN106411518A (zh) * | 2016-09-26 | 2017-02-15 | 北京洋浦伟业科技发展有限公司 | 一种密钥不固定的对称白盒加密方法和装置 |
WO2017045484A1 (zh) * | 2015-09-15 | 2017-03-23 | 中兴通讯股份有限公司 | 一种基于xts-sm4的存储加解密方法及装置 |
CN107209661A (zh) * | 2014-09-26 | 2017-09-26 | 英特尔公司 | 用于提供simd sm4加密块密码功能性的指令和逻辑 |
CN108959912A (zh) * | 2018-06-29 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种bios和操作***复用密码的方法、装置及设备 |
CN109617671A (zh) * | 2018-12-21 | 2019-04-12 | 成都海光集成电路设计有限公司 | 加解密、扩展方法及装置、加解密***、终端 |
CN109714307A (zh) * | 2018-06-12 | 2019-05-03 | 广东工业大学 | 一种基于国密算法的云平台客户端数据加解密***及方法 |
CN110034918A (zh) * | 2019-03-15 | 2019-07-19 | 深圳市纽创信安科技开发有限公司 | 一种sm4加速方法和装置 |
CN110855431A (zh) * | 2019-09-12 | 2020-02-28 | 南方电网数字电网研究院有限公司 | 一种密码算法加解密*** |
CN112751663A (zh) * | 2020-12-31 | 2021-05-04 | 南方电网科学研究院有限责任公司 | 一种数据加密方法和装置 |
CN112765614A (zh) * | 2020-11-26 | 2021-05-07 | 神州龙芯智能科技有限公司 | 一种在fpga上实现sm4加密算法的模块及方法 |
CN113938268A (zh) * | 2021-10-15 | 2022-01-14 | 湖南麒麟信安科技股份有限公司 | 分组密码算法的硬件控制*** |
-
2012
- 2012-11-07 CN CN201210441335.8A patent/CN103812641A/zh active Pending
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10454669B2 (en) | 2014-07-22 | 2019-10-22 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
US10469249B2 (en) | 2014-07-22 | 2019-11-05 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
CN110233721A (zh) * | 2014-07-22 | 2019-09-13 | 英特尔公司 | Sm4加速处理器、方法和*** |
US10419210B2 (en) | 2014-07-22 | 2019-09-17 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
US10425222B2 (en) | 2014-07-22 | 2019-09-24 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
CN110233720A (zh) * | 2014-07-22 | 2019-09-13 | 英特尔公司 | Sm4加速处理器、方法和*** |
CN105306195A (zh) * | 2014-07-22 | 2016-02-03 | 英特尔公司 | Sm4加速处理器、方法、***和指令 |
US10476667B2 (en) | 2014-07-22 | 2019-11-12 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
US10447468B2 (en) | 2014-07-22 | 2019-10-15 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
US10778425B2 (en) | 2014-09-26 | 2020-09-15 | Intel Corporation | Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality |
CN107209661A (zh) * | 2014-09-26 | 2017-09-26 | 英特尔公司 | 用于提供simd sm4加密块密码功能性的指令和逻辑 |
CN107209661B (zh) * | 2014-09-26 | 2021-09-07 | 英特尔公司 | 用于提供simd sm4加密块密码功能性的指令和逻辑 |
US11303438B2 (en) | 2014-09-26 | 2022-04-12 | Intel Corporation | Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality |
US11849035B2 (en) | 2014-09-26 | 2023-12-19 | Intel Corporation | Instructions and logic to provide SIMD SM4 cryptographic block cipher |
CN104579636B (zh) * | 2015-02-16 | 2018-01-05 | 滨州职业学院 | 一种超高速实现sm4算法的***及其运行方法 |
CN104579636A (zh) * | 2015-02-16 | 2015-04-29 | 滨州职业学院 | 一种超高速实现sm4算法的***及其运行方法 |
WO2017045484A1 (zh) * | 2015-09-15 | 2017-03-23 | 中兴通讯股份有限公司 | 一种基于xts-sm4的存储加解密方法及装置 |
CN105447417A (zh) * | 2015-11-06 | 2016-03-30 | 天津津航计算技术研究所 | 一种应用于高速数据存储的硬件加密方法 |
CN106209349A (zh) * | 2016-08-31 | 2016-12-07 | 福建联迪商用设备有限公司 | 基于3des算法的数据加密方法和装置 |
CN106230858A (zh) * | 2016-09-05 | 2016-12-14 | 烟台大学 | 工业数据加密传输方法 |
CN106411518A (zh) * | 2016-09-26 | 2017-02-15 | 北京洋浦伟业科技发展有限公司 | 一种密钥不固定的对称白盒加密方法和装置 |
CN106411518B (zh) * | 2016-09-26 | 2019-05-07 | 北京梆梆安全科技有限公司 | 一种密钥不固定的对称白盒加密方法和装置 |
CN109714307B (zh) * | 2018-06-12 | 2024-04-12 | 广东工业大学 | 一种基于国密算法的云平台客户端数据加解密***及方法 |
CN109714307A (zh) * | 2018-06-12 | 2019-05-03 | 广东工业大学 | 一种基于国密算法的云平台客户端数据加解密***及方法 |
CN108959912A (zh) * | 2018-06-29 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种bios和操作***复用密码的方法、装置及设备 |
US11232211B2 (en) | 2018-06-29 | 2022-01-25 | Zhengzhou Yunhai Information Technology Co., Ltd. | Method, apparatus and device for sharing password between BIOS and operating system |
CN109617671A (zh) * | 2018-12-21 | 2019-04-12 | 成都海光集成电路设计有限公司 | 加解密、扩展方法及装置、加解密***、终端 |
CN110034918B (zh) * | 2019-03-15 | 2023-10-20 | 深圳市纽创信安科技开发有限公司 | 一种sm4加速方法和装置 |
CN110034918A (zh) * | 2019-03-15 | 2019-07-19 | 深圳市纽创信安科技开发有限公司 | 一种sm4加速方法和装置 |
CN110855431A (zh) * | 2019-09-12 | 2020-02-28 | 南方电网数字电网研究院有限公司 | 一种密码算法加解密*** |
CN112765614A (zh) * | 2020-11-26 | 2021-05-07 | 神州龙芯智能科技有限公司 | 一种在fpga上实现sm4加密算法的模块及方法 |
CN112751663B (zh) * | 2020-12-31 | 2022-12-23 | 南方电网科学研究院有限责任公司 | 一种数据加密方法和装置 |
CN112751663A (zh) * | 2020-12-31 | 2021-05-04 | 南方电网科学研究院有限责任公司 | 一种数据加密方法和装置 |
CN113938268B (zh) * | 2021-10-15 | 2023-07-28 | 湖南麒麟信安科技股份有限公司 | 分组密码算法的硬件控制*** |
CN113938268A (zh) * | 2021-10-15 | 2022-01-14 | 湖南麒麟信安科技股份有限公司 | 分组密码算法的硬件控制*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103812641A (zh) | 一种实现sm4分组对称密码算法的*** | |
CN105490802B (zh) | 基于gpu的改进sm4并行加解密通信方法 | |
CN101764684B (zh) | 实现sms4算法的加解密*** | |
CN101764685B (zh) | 实现sms4算法的加解密*** | |
CN103516512A (zh) | 基于aes算法的加解密方法及加解密器 | |
CN104639314A (zh) | 基于aes加密/解密算法的装置和流水控制方法 | |
CN106712930A (zh) | 一种sm4加密方法及装置 | |
CN106034021B (zh) | 轻量级双模兼容aes加解密模块及其方法 | |
CN110166223A (zh) | 一种国密sm4的快速软件实现方法 | |
CN104852798B (zh) | 一种数据加解密***及方法 | |
CN105916141B (zh) | 一种自同步的祖冲之加解密算法的实现***及其方法 | |
TW201545524A (zh) | 用於以第二密文編密演算法之運算修改第一密文編密演算法的技術 | |
CN102801519A (zh) | 一种实现aes加解密的方法及装置 | |
CN102624520B (zh) | 基于aes的192比特位密钥扩展***及方法 | |
TWI554072B (zh) | 用於客製化倫多(Rijndael)區塊加密之方法 | |
CN102664730B (zh) | 基于高级加密标准aes的128比特位密钥扩展方法 | |
CN103731822A (zh) | 一种祖冲之算法的实现***及其方法 | |
Yoon et al. | A 55nm 50nJ/encode 13nJ/decode Homomorphic Encryption Crypto-Engine for IoT Nodes to Enable Secure Computation on Encrypted Data | |
CN104219045B (zh) | Rc4 流密码生成器 | |
CN106656470A (zh) | 一种基于改进aes算法的数据加密方法 | |
CN100561911C (zh) | 一种AES加解密电路中Sbox模块优化方法及优化电路 | |
CN102647272B (zh) | 256比特位密钥扩展***及方法 | |
JP2014240921A (ja) | 暗号装置、暗号処理方法及び暗号処理プログラム | |
CN109743156B (zh) | 一种分组加解密方法和装置 | |
CN102780557B (zh) | 一种选择门优化的aes加解密方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140521 |
|
WD01 | Invention patent application deemed withdrawn after publication |