构造方法、加密方法、解密方法、装置、设备及存储介质与流程

文档序号:24630965发布日期:2021-04-09 20:40阅读:143来源:国知局
构造方法、加密方法、解密方法、装置、设备及存储介质与流程

本申请实施例涉及计算机应用技术领域,尤其涉及一种构造方法、加密方法、解密方法、装置、设备及存储介质。



背景技术:

已作为密码行业标准gmt0002-2012的sm4算法是一种分组密码算法,密钥长度为128比特,分组长度128比特,加密算法与密钥扩展算法都采用32轮非线性迭代结构,解密过程与加密过程的结构相同。

目前,sm4算法应用广泛,应用sm4算法需要在内存中存储sm4算法所提供的起混淆的作用的多个s盒(sbox),且每一轮的加密步骤较为复杂,然而,多个s盒占用的存储空间比较大,且较为复杂的加密步骤消耗的计算资源比较多,导致sm4算法的加密性能较差,无法满足一些对加密性能要求高的应用场景的加密需求。



技术实现要素:

本申请实施例提供一种构造方法、加密方法、解密方法、装置、设备及存储介质,用优化sm4算法的加密性能。

第一方面,本申请实施例中提供了一种构造方法,包括:

确定sm4算法的s盒;

对所述s盒中的存储数据进行至少一次移位操作,并将每次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,获得至少一个查找表;

根据所述至少一个查找表生成目标查找表,其中,所述目标查找表中的存储数据用于参与到所述sm4算法的每一轮的加密计算。

第二方面,本申请实施例中提供了一种加密方法,包括:

确定明文;

利用目标查找表提供的存储数据,采用sm4算法对所述明文进行加密获得密文;其中,所述目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。

第三方面,本申请实施例中提供了一种解密方法,包括:

确定密文;

利用目标查找表提供的存储数据,采用sm4算法对所述密文进行解密获取明文;其中,所述目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。

第四方面,本申请实施例中提供了一种构造装置,包括:

第一确定模块,用于确定sm4算法的s盒;

第一处理模块,用于对所述s盒中的存储数据进行至少一次移位操作,并将每次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,获得至少一个查找表;

所述第一处理模块,还用于根据所述至少一个查找表生成目标查找表,其中,所述目标查找表中的存储数据用于参与到所述sm4算法的每一轮的加密计算。

第五方面,本申请实施例中提供了一种加密装置,包括:

第二确定模块,用于确定明文;

第二处理模块,用于利用目标查找表提供的存储数据,采用sm4算法对所述明文进行加密获得密文;其中,所述目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。

第六方面,本申请实施例中提供了一种解密装置,包括:

第三确定模块,用于确定密文;

第三处理模块,用于利用目标查找表提供的存储数据,采用sm4算法对所述密文进行解密获取明文;其中,所述目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。

第七方面,本申请实施例中提供了一种电子设备,包括处理组件以及存储组件;

所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行;

所述处理组件用于:

确定sm4算法的s盒;

对所述s盒中的存储数据进行至少一次移位操作,并将每次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,获得至少一个查找表;

根据所述至少一个查找表生成目标查找表,其中,所述目标查找表中的存储数据用于参与到所述sm4算法的每一轮的加密计算;或者,

所述处理组件用于:

确定明文;

利用目标查找表提供的存储数据,采用sm4算法对所述明文进行加密获得密文;其中,所述目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果;

或者,

所述处理组件用于:

确定密文;

利用目标查找表提供的存储数据,采用sm4算法对所述密文进行解密获取明文;其中,所述目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。

第八方面,本申请实施例中提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时实现上述构造方法、上述加密方法或者上述解密方法。

本申请实施例中,通过确定sm4算法的s盒;对所述s盒中的存储数据进行至少一次移位操作,并将每次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,获得至少一个查找表;根据所述至少一个查找表生成目标查找表,其中,所述目标查找表中的存储数据用于参与到所述sm4算法的每一轮的加密计算。由此,预先制作合成变换t(x)的目标查找表,后续加密时查询合成变换t(x)的目标查找表中的存储数据进行加密计算,即能减少对存储资源的占用,还能简化加密计算步骤,降低加密的运算量,节约计算资源,提高加密速度,优化了加密性能。当然,后续解密时查询合成变换t(x)的目标查找表中的存储数据进行解密计算,即能减少对存储资源的占用,还能简化解密计算步骤,降低解密的运算量,节约计算资源,提高解密速度,优化解密性能。

本请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

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

图1示出了根据本申请提供的构造方法一个实施例的流程图;

图2示出了sm4算法的原理图;

图3示出了sm4算法的s盒;

图4示出了根据本申请提供的加密方法一个实施例的流程图;

图5示出了根据本申请提供的解密方法一个实施例的流程图;

图6示出了根据本申请提供的构造装置一个实施例的结构示意图;

图7示出了根据本申请提供的加密装置一个实施例的结构示意图;

图8示出了根据本申请提供的解密装置一个实施例的结构示意图;

图9示出了根据本申请提供的电子设备一个实施例的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1示出了根据本申请提供的构造方法一个实施例的流程图。参见图1,该方法可以包括以下步骤:

101、确定sm4算法的s盒。

为了便于理解,结合图2对sm4算法进行简单介绍:

假设输入的明文为(x0,x1,x2,x3)、轮密钥为rki以及密文(y0,y1,y2,y3),其中,i为0至31中的任一整数;x0、x1、x2和x3均为明文中的一个字节,每个字节由16个比特bit组成,四个字节表示128个比特的明文;同样地,y0、y1、y2和y3均为密文中的一个字节,每个字节由16个比特组成,四个字节表示128个比特的密文。此外,第i+1轮的加密结果为(xi+1,xi+2,xi+3,xi+4),xi+1、xi+2、xi+3、xi+4均为加密结果中的一个字节。

则sm4算法可以表示为:xi+4=f(xi,xi+1,xi+2,xi+3,rki)=xi⊕t(xi+1⊕xi+2⊕xi+3⊕rki),(y0,y1,y2,y3)=(x35,x34,x33,x32),其中,⊕为异或运算符号,f(x)为轮函数,t(x)为合成变换函数。

参见图2,可以理解的是,上一轮加密结果中的后三个字节作为下一轮加密结果中的前三个字节,根据上一轮加密结果和下一轮加密所采用的轮密钥生成下一轮加密结果中的第四个字节。以明文为(x0,x1,x2,x3)例,第1轮的加密结果为(x1,x2,x3,x4),第2轮的加密结果为(x2,x3,x4,x5),依次类推,第32轮的加密结果为(x32,x33,x34,x35)。

其中,sm4的s盒sbox是一种以字节为单位的非线性代替变换,它的密码学作用是可以起到混淆的作用。s盒的本质是8个比特的非线性置换,输入数据和输出数据都是8个比特的字节。

图3所示为sm4的s盒,例如s盒的输入数据为ef,查询s盒中第e行和第f列的值,获取输出数据sbox(ef)=84。

其中,合成变换函数t(x)=l(τ(x))是非线性变换τ和线性变换l两者的一个复合,它可以同时起到混淆以及扩散的作用,由此可以大大地加强了密码的安全性。sm4的非线性变换τ的本质是s盒的一种并行应用,它由4个s盒并置构成,是用字来作为单位的一种非线性代替变换。

在应用现有的sm4进行加密时,需要在内存中存储至少4个s盒,占用的存储空间大,且在迭代加密计算时,既要多次查询s盒,还要进行多次移位操作以及多次线性变换,计算步骤较为复杂,运算量较大,消耗的计算资源多,加密速度下降,加密性能较差。

发明人经过研究发现,可以预先制作合成变换t(x)的查找表,加密时查询合成变换t(x)的查找表中的存储数据进行加密计算,即能减少对存储资源的占用,还能简化加密计算步骤,降低加密的运算量,节约计算资源,提高加密速度,优化加密性能。

102、对s盒中的存储数据进行至少一次移位操作,并将每次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,获得至少一个查找表。

在一些实施例中,依次遍历s盒中的存储数据;对当前遍历的存储数据进行至少一次的移位操作,并将每一次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,得到至少一个查找表。

在一种可能的实现方式中,“对当前遍历的存储数据进行至少一次的移位操作,并将每一次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,得到至少一个查找表”可以是:对当前遍历的存储数据进行左移24位的移位操作,以及对移位操作后的存储数据进行线性变换,得到第一线性变换结果,并将第一线性变换结果存储至第一查找表;对当前遍历的存储数据进行左移16位的移位操作,以及对移位操作后的存储数据进行线性变换,得到第二线性变换结果,并将第二线性变换结果存储至第二查找表;对当前遍历的存储数据进行左移8位的移位操作,以及对移位操作后的存储数据进行线性变换,得到第三线性变换结果,并将第三线性变换结果存储至第三查找表;对当前遍历的存储数据进行线性变换,得到第四线性变换结果,并将第四线性变换结果存储至第四查找表。

为了便于理解,假设第一查找表为t1[d1],第二查找表为t2[d2],第三查找表为t3[d3],以及第四查找表为t4[d4],<<为向左移位操作,l()为线性变换操作。

其中,t1[d1]=l(sbox(d1)<<24),按照d1从00至ff依次遍历s盒,对当前遍历的sbox(d1)进行向左移位24位的移位操作,以及对移位操作后的sbox(d1)进行线性变换,并将得到的线性变换结果作为与d1对应的存储数据存储至第一查找表t1[d1]。

其中,t2[d2]=l(sbox(d2)<<16),按照d2从00至ff依次遍历s盒,对当前遍历的sbox(d2)进行向左移位16位的移位操作,以及对移位操作后的sbox(d2)进行线性变换,并将得到的线性变换结果作为与d2对应的存储数据存储至第二查找表t2[d2]中。

其中,t3[d3]=l(sbox(d3)<<8)按照d3从00至ff依次遍历s盒,对当前遍历的sbox(d3)进行向左移位8位的移位操作,以及对移位操作后的

sbox(d3)进行线性变换,并将得到的线性变换结果作为与d3对应的存储数据存储至第二查找表t3[d3]中。

其中,t4[d4]=l(sbox(d4)),按照d4从00至ff依次遍历s盒,对当前遍历的sbox(d4)进行线性变换,并将得到的线性变换结果作为与d4对应的存储数据存储至第四查找表t4[d4]中。

需要指出的是,第一查找表为t1[d1],第二查找表为t2[d2],第三查找表为t3[d3]以及第四查找表为t4[d4]均为8比特输入、32比特输出的查找表。其中,8比特输入即指查找表的输入数据为8个比特,32比特输出即指查找表所输出的存储数据为32个比特。

103、根据至少一个查找表生成目标查找表,其中,目标查找表中的存储数据用于参与到sm4算法的每一轮的加密计算。

在一些实施例中,依次对第一查找表、第二查找表、第三查找表、第四查找表中相同位置的存储数据进行异或运算,将异或运算结果存储至目标查找表中。

其中,第一查找表、第二查找表、第三查找表、第四查找表均为8比特输入、32比特输出的一维查找表。

假设目标查找表为t,t=t1[d1]⊕t2[d2]⊕t3[d3]⊕t4[d4],其中,在每次异或运算时,d1、d2、d3、d4依次从00至ff取同一数值。

需要指出的是,目标查找表即为与sm4算法中合成变换t(x)对应的查找表,该目标查找表减少了对内存资源的占用。

发明人在基于目标查找表进行sm4算法加密时,发现与现有的sm4算法相比,加密效率提高约一倍,目标查表占用的存储空间仅1kb,至少可以有效的节约3kb的存储空间。

在一些实施例中,目标查找表中的256个32比特的存储数据依次如下:

0x8ed55b5b,0xd0924242,0x4deaa7a7,0x06fdfbfb,0xfccf3333,0x65e28787,0xc93df4f4,0x6bb5dede,0x4e165858,0x6eb4dada,0x44145050,0xcac10b0b,0x8828a0a0,0x17f8efef,0x9c2cb0b0,0x11051414,0x872bacac,0xfb669d9d,0xf2986a6a,0xae77d9d9,0x822aa8a8,0x46bcfafa,0x14041010,0xcfc00f0f,0x02a8aaaa,

0x54451111,0x5f134c4c,0xbe269898,0x6d482525,0x9e841a1a,

0x1e061818,0xfd9b6666,0xec9e7272,0x4a430909,0x10514141,0x24f7d3d3,0xd5934646,0x53ecbfbf,0xf89a6262,0x927be9e9,0xff33cccc,0x04555151,0x270b2c2c,0x4f420d0d,0x59eeb7b7,0xf3cc3f3f,0x1caeb2b2,0xea638989,0x74e79393,0x7fb1cece,0x6c1c7070,0x0daba6a6,0xedca2727,0x28082020,0x48eba3a3,

0xc1975656,0x80820202,0xa3dc7f7f,0xc4965252,0x12f9ebeb,

0xa174d5d5,0xb38d3e3e,0xc33ffcfc,0x3ea49a9a,0x5b461d1d,0x1b071c1c,0x3ba59e9e,0x0cfff3f3,0x3ff0cfcf,0xbf72cdcd,0x4b175c5c,0x52b8eaea,0x8f810e0e,0x3d586565,0xcc3cf0f0,0x7d196464,0x7ee59b9b,0x91871616,0x734e3d3d,0x08aaa2a2,0xc869a1a1,0xc76aadad,0x85830606,0x7ab0caca,0xb570c5c5,

0xf4659191,0xb2d96b6b,0xa7892e2e,0x18fbe3e3,0x47e8afaf,

0x330f3c3c,0x674a2d2d,0xb071c1c1,0x0e575959,0xe99f7676,0xe135d4d4,0x661e7878,0xb4249090,0x360e3838,0x265f7979,0xef628d8d,0x38596161,0x95d24747,0x2aa08a8a,0xb1259494,0xaa228888,0x8c7df1f1,0xd73becec,0x05010404,0xa5218484,0x9879e1e1,0x9b851e1e,0x84d75353,0x00000000,0x5e471919,0x0b565d5d,0xe39d7e7e,0x9fd04f4f,0xbb279c9c,0x1a534949,

0x7c4d3131,0xee36d8d8,0x0a020808,0x7be49f9f,0x20a28282,0xd4c71313,0xe8cb2323,0xe69c7a7a,0x42e9abab,0x43bdfefe,0xa2882a2a,0x9ad14b4b,0x40410101,0xdbc41f1f,0xd838e0e0,0x61b7d6d6,0x2fa18e8e,0x2bf4dfdf,0x3af1cbcb,0xf6cd3b3b,0x1dfae7e7,0xe5608585,0x41155454,0x25a38686,0x60e38383,

0x16acbaba,0x295c7575,0x34a69292,0xf7996e6e,0xe434d0d0,

0x721a6868,0x01545555,0x19afb6b6,0xdf914e4e,0xfa32c8c8,0xf030c0c0,0x21f6d7d7,0xbc8e3232,0x75b3c6c6,0x6fe08f8f,0x691d7474,0x2ef5dbdb,0x6ae18b8b,0x962eb8b8,0x8a800a0a,0xfe679999,0xe2c92b2b,0xe0618181,0xc0c30303,0x8d29a4a4,0xaf238c8c,0x07a9aeae,0x390d3434,0x1f524d4d,0x764f3939,

0xd36ebdbd,0x81d65757,0xb7d86f6f,0xeb37dcdc,0x51441515,

0xa6dd7b7b,0x09fef7f7,0xb68c3a3a,0x932fbcbc,0x0f030c0c,0x03fcffff,0xc26ba9a9,0xba73c9c9,0xd96cb5b5,0xdc6db1b1,0x375a6d6d,0x15504545,0xb98f3636,0x771b6c6c,0x13adbebe,0xda904a4a,0x57b9eeee,0xa9de7777,0x4cbef2f2,0x837efdfd,0x55114444,0xbdda6767,0x2c5d7171,0x45400505,0x631f7c7c,

0x50104040,0x325b6969,0xb8db6363,0x220a2828,0xc5c20707,

0xf531c4c4,0xa88a2222,0x31a79696,0xf9ce3737,0x977aeded,0x49bff6f6,0x992db4b4,0xa475d1d1,0x90d34343,0x5a124848,0x58bae2e2,0x71e69797,0x64b6d2d2,0x70b2c2c2,0xad8b2626,0xcd68a5a5,0xcb955e5e,0x624b2929,0x3c0c3030,0xce945a5a,0xab76dddd,0x867ff9f9,0xf1649595,0x5dbbe6e6,0x35f2c7c7,

0x2d092424,0xd1c61717,0xd66fb9b9,0xdec51b1b,0x94861212,

0x78186060,0x30f3c3c3,0x897cf5f5,0x5cefb3b3,0xd23ae8e8,0xacdf7373,0x794c3535,0xa0208080,0x9d78e5e5,0x56edbbbb,0x235e7d7d,0xc63ef8f8,0x8bd45f5f,0xe7c82f2f,0xdd39e4e4,0x68492121。

在一些实施例中,在根据至少一个查找表生成目标查找表之后,该方法还包括:在本地保存目标查找表或者将目标查找表上传至加密端。

实际应用中,可以将目标查找表保存在执行构造方法的构造端,后续加密端执行加密步骤时,可以向构造端请求获取目标查找表。当然,构造端生成目标查找表之后,还可以将目标查找表上传至加密端,由加密端进行保存。另外,也可以由加密端执行构造方法生成目标查找表并在加密端本地保存。

其中,构造端或加密端包括但不限于手机、电脑、可穿戴设备、车载设备、服务器等各种终端设备。

可以理解的是,由构造端执行构造方法生成目标查找表,加密端向构造端请求获取目标查找表的方式,可以减轻加密端的负荷,提高加密端的加密性能。当然,针对多个加密端的场景,由构造端执行构造方法生成目标查找表,还可以快速满足多个加密端的加密需求,无需每个加密端执行构造方法生成目标查找表,节约了系统资源。

本申请实施例提供的构造方法,通过确定sm4算法的s盒;对s盒中的存储数据进行至少一次移位操作,并将每次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,获得至少一个查找表;根据至少一个查找表生成目标查找表,其中,目标查找表中的存储数据用于参与到sm4算法的每一轮的加密计算。由此,预先制作合成变换t(x)的目标查找表,后续加密时查询合成变换t(x)的目标查找表中的存储数据进行加密计算,即能减少对存储资源的占用,还能简化加密计算步骤,降低加密的运算量,节约计算资源,提高加密速度,优化了加密性能。当然,后续解密时查询合成变换t(x)的目标查找表中的存储数据进行解密计算,即能减少对存储资源的占用,还能简化解密计算步骤,降低解密的运算量,节约计算资源,提高解密速度,优化解密性能。

图4示出了根据本申请提供的加密方法一个实施例的流程图。参见图4,该方法可以包括以下步骤:

401、确定明文。

402、利用目标查找表提供的存储数据,采用sm4算法对明文进行加密获得密文;其中,目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。

在本实施例中,加密方法由加密端执行,加密端在加密过程中所利用的目标查找表可以由加密端按照图1所示的构造方法生成得到,也可以向构造端请求获取目标查找表,在此不做限制,关于目标查找表的构造方法参照前述内容。

在一些实施例中,利用目标查找表提供的存储数据,采用sm4算法对明文进行加密获得密文具体是:

s1、确定用于加密明文的32轮中每轮的轮密钥。

s2、执行32轮的加密操作,其中,针对每轮加密操作:将上一轮的加密结果中后三个字节作为待生成的当前轮的加密结果中的前三个字节;确定上一轮的加密结果中后三个字节和当前轮的轮密钥的第一异或操作结果,以及根据第一异或操作结果查询目标查找表,获取与第一异或操作结果匹配的存储数据;并将上一轮的加密结果中第一个字节和查询所得的存储数据进行异或运算得到的第二异或操作结果,作为当前轮的加密结果中的第四个字节。

s3、获取第32轮的加密结果,并对第32轮的加密结果进行反序,得到明文的密文。

为了便于理解,假设128bit的明文表示为(x0,x1,x2,x3),其中,x0、x1、x2、x3均为明文中的一个字节;假设128bit的密文表示为(y0,y1,y2,y3),其中,y0、y1、y2、y3均为明文中的一个字节;假设轮密钥rki,其中,i为0至31中的任一整数。

根据sm4算法的规定,第i+1轮加密结果(xi+1,xi+2,xi+3,xi+4)中的前三个字节来源于第i轮的加密结果(xi,xi+1,xi+2,xi+3)中的后三个字节,因此,获取第i轮的加密结果中的后三个字节xi、xi+1、xi+2作为第i+1轮加密结果(xi+1,xi+2,xi+3,xi+4)中的前三个字节。

根据sm4算法的规定,第i+1轮加密结果(xi+1,xi+2,xi+3,xi+4)中的第四个字节xi+4满足xi+4=xi⊕t(xi+1⊕xi+2⊕xi+3⊕rki)这一条件。因此,为了获取xi+4,可以先依次将xi+1、xi+2、xi+3、rki进行异或运算,得到第一异或操作结果;接着,将第一异或操作结果作为目标查找表的输入数据,在目标查找表中查找与该输入数据匹配的存储数据;接着,对xi和查找到的存储数据进行异或运算,得到第二异或操作结果即为xi+4。由此,确定了第i+1轮加密结果的四个字节(xi+1,xi+2,xi+3,xi+4)。

在执行完第32轮的加密计算后,获取第32轮的加密结果(x32,x33,x34,x35),并对加密结果(x32,x33,x34,x35)进行反序,得到密文(x32,x33,x34,x35)即(y0,y1,y2,y3)。

在一些实施例中,轮秘钥rki按照秘钥扩展算法得到。

本申请实施例提供的加密方法,通过确定明文,利用目标查找表提供的存储数据,采用sm4算法对明文进行加密获得密文;其中,目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。由此,加密时查询合成变换t(x)的目标查找表中的存储数据进行加密计算,即能减少对存储资源的占用,还能简化加密计算步骤,降低加密的运算量,节约计算资源,提高加密速度,优化加密性能。

图5示出了根据本申请提供的解密方法一个实施例的流程图。参见图5,该方法可以包括以下步骤:

501、确定密文。

502、利用目标查找表提供的存储数据,采用sm4算法对所述密文进行解密获取明文;其中,所述目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。

在本实施例中,由解密端执行解密方法,解密端可以在解密过程中所利用的目标查找表可以由解密端按照图1所示的构造方法生成得到,也可以向构造端请求获取目标查找表,在此不做限制,关于目标查找表的构造方法参照前述内容。

由于sm4密码算法的解密算法结构和加密算法结构一样,不同的是轮密钥的使用顺序,解密的轮密钥和加密的轮密钥是相反的,也就是说,解密的轮密钥是加密的轮密钥的逆序。

在一些实施例中,步骤502具体实现方式可以为:确定用于解密所述密文的32轮中每轮的轮密钥;对所述密文进行反序,并对反序后的密文执行32轮的解密操作,其中,针对每轮解密操作:将上一轮的解密结果中前三个字节作为待生成的当前轮的解密结果中的后三个字节;确定上一轮的解密结果中前三个字节和当前轮的轮密钥的第三异或操作结果,以及根据所述第三异或操作结果查询所述目标查找表,获取与所述第三异或操作结果匹配的存储数据;根据所述上一轮的解密结果中第四个字节和与所述第三异或操作结果匹配的存储数据确定作为当前轮的解密结果中的第一个字节;获取第32轮的解密结果以得到明文。

为了便于理解,假设128bit的明文表示为(x0,x1,x2,x3),其中,x0、x1、x2、x3均为明文中的一个字节;假设128bit的密文表示为(y0,y1,y2,y3),其中,y0、y1、y2、y3均为明文中的一个字节;假设轮密钥rki,其中,i为0至31中的任一整数。

根据sm4算法的规定,对密文进行反序得到第32轮的加密结果(x32,x33,x34,x35),对第32轮的加密结果进行32轮的解密,得到明文(x0,x1,x2,x3);

其中,第i+1轮解密结果(xi,xi+1,xi+2,xi+3)中的后三个字节来源于第i轮解密结果(xi+1,xi+2,xi+3,xi+4)的前三个字节,因此,获取第i轮的解密结果中的前三个字节xi+1、xi+2、xi+3作为第i+1轮解密结果(xi,xi+1,xi+2,xi+3)中的后三个字节。

针对第i+1轮解密结果(xi,xi+1,xi+2,xi+3)中第一个字节xi,先依次将xi+1、xi+2、xi+3、rki进行异或运算,得到第三异或操作结果;接着,将第三异或操作结果作为目标查找表的输入数据,在目标查找表中查找与该输入数据匹配的存储数据t(xi+1⊕xi+2⊕xi+3⊕rki);接着,在已知xi+4和t(xi+1⊕xi+2⊕xi+3⊕rki)的前提下,根据公式xi+4=f(xi,xi+1,xi+2,xi+3,rki)=xi⊕t(xi+1⊕xi+2⊕xi+3⊕rki)不难得到xi,xi即第i+1轮解密结果的第一个字节。

在执行完第32轮的解密计算后,获取第32轮的解密结果(x0,x1,x2,x3)即明文。

本申请实施例提供的解密方法,通过确定密文;利用目标查找表提供的存储数据,采用sm4算法对所述密文进行解密获取明文;其中,所述目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。由此,解密时查询合成变换t(x)的目标查找表中的存储数据进行解密计算,即能减少对存储资源的占用,还能简化解密计算步骤,降低解密的运算量,节约计算资源,提高解密速度,优化解密性能。

图6示出了根据本申请提供的构造装置一个实施例的结构示意图。

参见图6,该构造装置可以包括:

第一确定模块601,用于确定sm4算法的s盒;

第一处理模块602,用于对s盒中的存储数据进行至少一次移位操作,并将每次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,获得至少一个查找表;

第一处理模块602,还用于根据至少一个查找表生成目标查找表,其中,目标查找表中的存储数据用于参与到sm4算法的每一轮的加密计算。

在一些实施例中,第一处理模块602获取至少一个查找表具体是:

依次遍历s盒中的存储数据;

对当前遍历的存储数据进行至少一次的移位操作,并将每一次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,得到至少一个查找表。

在一些实施例中,第一处理模块602对当前遍历的存储数据进行至少一次的移位操作,并将每一次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,得到至少一个查找表具体是:

对当前遍历的存储数据进行左移24位的移位操作,以及对移位操作后的存储数据进行线性变换,得到第一线性变换结果,并将第一线性变换结果存储至第一查找表;

对当前遍历的存储数据进行左移16位的移位操作,以及对移位操作后的存储数据进行线性变换,得到第二线性变换结果,并将第二线性变换结果存储至第二查找表;

对当前遍历的存储数据进行左移8位的移位操作,以及对移位操作后的存储数据进行线性变换,得到第三线性变换结果,并将第三线性变换结果存储至第三查找表;

对当前遍历的存储数据进行线性变换,得到第四线性变换结果,并将第四线性变换结果存储至第四查找表。

在一些实施例中,第一处理模块602根据至少一个查找表生成目标查找表具体是:

依次对第一查找表、第二查找表、第三查找表、第四查找表中相同位置的存储数据进行异或运算,将异或运算结果存储至目标查找表中。

在一些实施例中,第一处理模块602,在根据至少一个查找表生成目标查找表之后,还用于:在本地保存目标查找表或者将目标查找表上传至加密端。

图6的构造装置可以执行图1所示实施例的构造方法,其实现原理和技术效果不再赘述。对于上述实施例中的构造装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图7示出了根据本申请提供的加密装置一个实施例的结构示意图。参见图7,该加密装置可以包括:

第二确定模块701,用于确定明文;

第二处理模块702,用于利用目标查找表提供的存储数据,采用sm4算法对明文进行加密获得密文;其中,目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。

在一些实施例中,第二处理模块702利用目标查找表提供的存储数据,采用sm4算法对明文进行加密获得密文具体是:

确定用于加密明文的32轮中每轮的轮密钥;

执行32轮的加密操作,其中,针对每轮加密操作:将上一轮的加密结果中后三个字节作为待生成的当前轮的加密结果中的前三个字节;确定上一轮的加密结果中后三个字节和当前轮的轮密钥的第一异或操作结果,以及根据第一异或操作结果查询目标查找表,获取与第一异或操作结果匹配的存储数据;并将上一轮的加密结果中第一个字节和查询所得的存储数据进行异或运算得到的第二异或操作结果,作为当前轮的加密结果中的第四个字节;

获取第32轮的加密结果,并对第32轮的加密结果进行反序,得到明文的密文。

图7的加密装置可以执行图4所示实施例的加密方法,其实现原理和技术效果不再赘述。对于上述实施例中的加密装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图8示出了根据本申请提供的解密装置一个实施例的结构示意图。参见图8,该解密装置可以包括:

第三确定模块801,用于确定密文;

第三处理模块802,用于利用目标查找表提供的存储数据,采用sm4算法对所述密文进行解密获取明文;其中,所述目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。

在一些实施例中,第三处理模块802具体用于:

确定用于解密所述密文的32轮中每轮的轮密钥;

对所述密文进行反序,并对反序后的密文执行32轮的解密操作,其中,针对每轮解密操作:将上一轮的解密结果中前三个字节作为待生成的当前轮的解密结果中的后三个字节;确定上一轮的解密结果中前三个字节和当前轮的轮密钥的第三异或操作结果,以及根据所述第三异或操作结果查询所述目标查找表,获取与所述第三异或操作结果匹配的存储数据;根据所述上一轮的解密结果中第四个字节和与所述第三异或操作结果匹配的存储数据确定作为当前轮的解密结果中的第一个字节;

获取第32轮的解密结果以得到明文。

图8的解密装置可以执行图5所示实施例的解密方法,其实现原理和技术效果不再赘述。对于上述实施例中的解密装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

在一个可能的设计中,图6所示实施例的构造装置、图7所示实施例的加密装置或者图8所示实施例的解密装置均可以实现为电子设备,如图9所示,该电子设备可以包括存储组件901以及处理组件902;

存储组件901存储一条或多条计算机指令,其中,一条或多条计算机指令供处理组件调用执行。

处理组件902用于:

确定sm4算法的s盒;

对s盒中的存储数据进行至少一次移位操作,并将每次移位操作后的存储数据进行线性变换,以及将线性变换结果存储至当前移位操作对应的查找表中,获得至少一个查找表;

根据至少一个查找表生成目标查找表,其中,目标查找表中的存储数据用于参与到sm4算法的每一轮的加密计算;或者,

处理组件902用于:

确定明文;

利用目标查找表提供的存储数据,采用sm4算法对明文进行加密获得密文;其中,目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果;或者,

处理组件902用于:

确定密文;

利用目标查找表提供的存储数据,采用sm4算法对所述密文进行解密获取明文;其中,所述目标查找表根据至少一个查找表生成;每个查找表中存储对s盒中的存储数据进行一次移位操作和线性变换得到的线性变换结果。

其中,处理组件902可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

存储组件901被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

另外,电子设备还可以包括显示组件903,显示组件903可以为电致发光(el)元件、液晶显示器或具有类似结构的微型显示器、或者视网膜可直接显示或类似的激光扫描式显示器。

当然,电子设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。

输入/输出接口为处理组件902和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。

通信组件被配置为便于电子设备和其他设备之间有线或无线方式的通信等。

如在本文所使用的,“电子设备”可以是远程web服务器、服务器、计算机联网设备、芯片组、台式计算机、笔记本式计算机、工作站,或任何其他处理设备或者装备。

其中,该电子设备可以为物理设备或者云计算平台提供的弹性计算主机等,此时电子设备即可以是指云服务器,上述处理组件、存储组件等可以是从云计算平台租用或购买的基础服务器资源。

本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被计算机执行时可以实现上述图1所示实施例的构造方法、上述图4所示实施例的加密方法或者上述图5所示实施例的解密方法。

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

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。

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

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