CN115459950A - 一种迭代加密的方法和装置 - Google Patents

一种迭代加密的方法和装置 Download PDF

Info

Publication number
CN115459950A
CN115459950A CN202210945429.2A CN202210945429A CN115459950A CN 115459950 A CN115459950 A CN 115459950A CN 202210945429 A CN202210945429 A CN 202210945429A CN 115459950 A CN115459950 A CN 115459950A
Authority
CN
China
Prior art keywords
information
key information
round key
round
sub
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
Application number
CN202210945429.2A
Other languages
English (en)
Inventor
张四龙
秦元河
潘廷勇
王艳辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Visionvera Information Technology Co Ltd
Original Assignee
Visionvera Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Visionvera Information Technology Co Ltd filed Critical Visionvera Information Technology Co Ltd
Priority to CN202210945429.2A priority Critical patent/CN115459950A/zh
Publication of CN115459950A publication Critical patent/CN115459950A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例提供了一种迭代加密的方法和装置,所述方法包括:获取待加密明文信息和用于对所述待加密明文信息进行加密的初始密钥信息;基于所述初始密钥信息,迭代生成多个轮密钥信息;在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,生成目标密文信息。通过本发明实施例,实现了在生成轮密钥同时进行迭代加密,提高加密速度。

Description

一种迭代加密的方法和装置
技术领域
本发明涉及数据加密技术领域,特别是涉及一种迭代加密的方法和装置。
背景技术
在数据传输过程中,数据加密有效确保了数据的安全,而目前的迭代加密过程中,需要在生成所有轮密钥之后,才进行核心明文的加密,导致加密运算耗时长,加密效率低。
发明内容
鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种迭代加密的方法和装置,包括:
一种迭代加密的方法,所述方法包括:
获取待加密明文信息和用于对所述待加密明文信息进行加密的初始密钥信息;
基于所述初始密钥信息,迭代生成多个轮密钥信息;
在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,生成目标密文信息。
可选地,所述基于所述初始密钥信息,迭代生成多个轮密钥信息,包括:
将所述初始密钥进行分组得到N个子密钥信息;
获取所述N个子密钥信息对应的第一参数信息;
根据所述N个子密钥信息和所述第一参数信息,生成从第一个轮密钥信息至第N个轮密钥信息的N个初始轮密钥信息;
基于所述N个初始轮密钥信息和预设的第二参数信息,迭代生成多个轮密钥信息。
可选地,所述基于所述N个初始轮密钥信息和预设的第二参数信息,迭代生成多个轮密钥信息,包括:
在轮密钥迭代生成过程中,确定当前轮密钥迭代生成过程对应的第二参数信息;
按照已生成的轮密钥信息的顺序,确定最近生成的N个轮密钥信息;
根据所述最近生成的N个轮密钥信息和所述当前轮密钥迭代生成过程对应的第二参数信息,生成下一个轮密钥信息。
可选地,所述在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,得到目标密文信息,包括:
将所述待加密明文信息进行分组得到第一个子明文信息至第K个子明文信息;
在迭代加密过程中,从已生成的轮密钥信息中确定所述当前迭代加密过程对应的目标轮密码信息;
在生成所述目标轮密码信息对应的下一个轮密码信息的过程中,按照已生成的子明文信息的顺序,确定最近生成的K个子明文信息,并根据所述最近生成的K个子明文信息和所述目标轮密钥信息,生成下一个子明文信息;
根据所有已生成的子明文信息,生成目标密文信息。
可选地,所述根据所有已生成的子明文信息,生成目标密文信息,包括:
依照所有已生成的子明文信息的顺序,确定最近生成的K个子明文信息;
对所述最近生成的K个子明文信息进行反序变换,得到目标密文信息。
可选地,所述根据所述N个子密钥信息和所述第一参数信息,生成从第一个轮密钥信息至第N个轮密钥信息的N个初始轮密钥信息,包括:
将每个子密钥信息与其对应的第一参数信息进行异或运算,得到初始轮密钥信息。
可选地,所述初始密钥信息为SM4分组密码算法的密钥信息。
一种迭代加密的装置,所述装置包括:
信息获取模块,用于获取待加密明文信息和用于对所述待加密明文信息进行加密的初始密钥信息;
轮密钥生成模块,基于所述初始密钥信息,迭代生成多个轮密钥信息;
迭代加密模块,用于在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,生成目标密文信息。
一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的迭代加密的方法。
一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的迭代加密的方法。
本发明实施例具有以下优点:
在本发明实施例中,通过获取待加密明文信息和用于对所述待加密明文信息进行加密的初始密钥信息,进而可以基于所述初始密钥信息,迭代生成多个轮密钥信息,以及在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,生成目标密文信息,实现了在生成轮密钥同时进行迭代加密,提高加密速度。
附图说明
为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明一实施例提供的一种迭代加密的方法的步骤流程图;
图1b是本发明一实施例提供的一种轮密钥信息生成的流程图;
图1c是本发明一实施例提供的另一种轮密钥信息生成的流程图;
图1d是本发明一实施例提供的一种目标密文信息生成的流程图;
图2是本发明一实施例提供的迭代加密的装置的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1a,示出了本发明一实施例提供的一种迭代加密的方法的步骤流程图,具体可以包括如下步骤:
步骤101,获取待加密明文信息和用于对所述待加密明文信息进行加密的初始密钥信息;
其中,待加密明文信息为需要进行加密的数据,是指没有加密的文字、字符串或者通过预设公开的编码标准就能获得的数据;在通信系统中,待加密明文信息还可以是比特流,如文本、位图、数字化的语音或者数字化的视频图像等。待加密明文信息可以经过预设的加密算法进行作用,将作用后的数据称为密文。
初始密钥信息可以为基于加密算法预先设定的密钥,密钥为一种参数,用于作为在明文转换为密文或将密文转换为明文的算法中输入的参数,密钥可以分为对称密钥与非对称密钥。
根据加密算法所使用的加密密钥和解密密钥是否相同、能否由加密过程推导出解密过程(或者由解密过程推导出加密过程),可加密类型划分为对称密钥加密和非堆成密钥加密。
对称密钥加密又称私钥加密或会话密钥加密算法,即信息的发送方和接收方使用同一个密钥去加密和解密数据;非对称密钥加密,又称公钥密钥加密,需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。
初始密钥信息可以作为密钥初始值,用于迭代生成多个用于对明文(如待加密明文信息)进行迭代加密的轮密钥。
当需要对传输数据进行加密处理时,可以获取待加密明文信息(即传输数据),以及用于对待加密明文信息进行加密的初始密钥信息,在实际应用中,可以根据加密处理所选择的不同加密算法设置不同的初始密钥信息。
例如,当采用SM4分组密码算法对待加密明文信息进行加密时,初始密钥信息则可以是SM4分组密码算法的密钥信息,其中,SM4分组密码算法为一个迭代分组密码算法,由加解密算法和密钥扩展算法组成,SM4分组密码算法可以采用非平衡Feistel结构,属于对称加密,分组长度为 128bit(16byte),密钥长度为128bit(16byte)。
步骤102,基于所述初始密钥信息,迭代生成多个轮密钥信息;
其中,轮密钥信息为迭代加密算法中,针对每轮的迭代加密过程所使用的密钥。例如,在SM4分组密码算法中,轮密钥信息的密钥长度为32bit,轮密钥信息可以基于初始密钥信息迭代生成。
加密算法可以分为轮密钥拓展运算以及加解密运算,轮密钥拓展运算可以生成多个轮密钥信息,而加解密运算是多个轮密钥信息对待加密明文信息进行加密的过程。
在获取初始密钥信息后,可以基于初始密钥信息进行分组迭代,在迭代过程中依次生成轮密钥信息,
在本发明一实施例中,所述步骤102可以包括以下子步骤:
子步骤1021,将所述初始密钥进行分组得到N个子密钥信息;
在实际应用中,可以将包含多个字节的初始密钥按预设字节数进行分组,得到N个子密钥信息。其中,N个子密钥信息中的每一个子密钥信息可以包含相同的字节数,其中,N为大于等于2的正整数。
子步骤2022,获取所述N个子密钥信息对应的第一参数信息;
其中,第一参数信息可以是针对待加密明文信息所选择的加密算法预设的一类固定参数,可以用于对初始密钥分组后的子密钥信息进行初步处理,以得到初始轮密钥信息,第一参数信息可以与子密钥信息字节数相同,例如,第一参数信息可以是SM4分组密码算法的系统参数(FK),在SM4分组密码算法中设置有四个32bit的系统参数(FK),具体可以包括:0xa3b1bac6、 0x56aa3350、0x677d9197、0xb27022dc。
在加密算法中还可以设置有第一参数信息,第一参数信息用于对初始密钥分组后的子密钥信息进行处理,得到初始轮密钥信息,N个子密钥信息中的每个子密钥信息有其对应的第一参数信息。
需要说明的是,第一参数可以是一个或多个,其第一参数的数量,以及第一参数与子密钥信息的对应关系可以是根据加密算法设置,其对应关系可以是一对多(即多个子密钥信息共用同一个第一参数),也可以是一对一(即每个子密钥信息分别对应一个独立的第一参数信息)。
子步骤1023,根据所述N个子密钥信息和所述第一参数信息,生成从第一个轮密钥信息至第N个轮密钥信息的N个初始轮密钥信息;
在获取第一参数信息后,可以将第一参数信息对其对应的子密钥信息进行处理,从而可以得到初始轮密钥信息,进而基于初始轮密钥信息进行迭代生成多个轮密钥信息。
在本发明以实施例中,子步骤1023具体可以包括:将每个子密钥信息与其对应的第一参数信息进行异或运算,得到初始轮密钥信息。
在实际应用中,第一参数信息与每个子密钥信息之间可以进行异或运算,从而得到初始轮密钥信息。
其中,第一参数信息的字节数与初始轮密钥的字节数相同。
异或的数学符号为“⊕”,异或运算的运算规则是:如果a、b两个值不相同,则异或结果为1;如果a、b两个值相同,异或结果为0。
例如:若x是二进制数0101,y是二进制数1011;
则x⊕y=1110。
例如:在SM4加密算法中,将初始密钥信息分组的每个子密钥信息(MKi) 分别与系统参数的每个字(FKi)做异或运算得到(K0,K1,K2,K3)。
Figure BDA0003787087470000061
子步骤1024,基于所述N个初始轮密钥信息和预设的第二参数信息,迭代生成多个轮密钥信息。
其中,第二参数信息可以是针对待加密明文信息所选择的加密算法预设的另一类固定参数,可以用于迭代生成轮密钥信息,第二参数信息可以与轮密钥信息字节数相同,需要说明的是,第二参数可以是一个或多个,其第二参数的数量,以及第二参数与轮密码迭代生成过程的对应关系可以是根据加密算法设置,其对应关系可以是一对多(即多个轮密码迭代生成过程共用同一个第二参数),也可以是一对一(即每个轮密码迭代生成过程分别对应一个独立的第二参数信息)。
例如,第二参数信息可以是SM4分组密码算法的固定参数(CK),SM4 分组密码算法为32轮的迭代加密算法,在每一轮的迭代加密过程中需要一个轮密钥信息,因而,对应可以设置有32个32bit的固定参数(CK),用于生成对应的32个轮密码信息,具体可以如下:
0x00070e15,0x1c232a31,0x383f464d,0x545b6269,
0x70777e85,0x8c939aa1,0xa8afb6bd,0xc4cbd2d9,
0xe0e7eef5,0xfc030a11,0x181f262d,0x343b4249,
0x50575e65,0x6c737a81,0x888f969d,0xa4abb2b9,
0xc0c7ced5,0xdce3eaf1,0xf8ff060d,0x141b2229,
0x30373e45,0x4c535a61,0x686f767d,0x848b9299,
0xa0a7aeb5,0xbcc3cad1,0xd8dfe6ed,0xf4fb0209,
0x10171e25,0x2c333a41,0x484f565d,0x646b7279。
在轮密码迭代生成过程中,每一轮的轮密码迭代生成过程中,需要消耗一个对应的固定参数(CK),以生成一个新的轮密码信息。
在加密算法中,还可以预先设置用于进行轮密钥信息迭代的第二参数信息,针对每一轮的轮密钥生成过程可以设置有对应的第二参数信息。
在生成N个初始轮密钥信息之后,可以根据第二参数信息对初始轮密钥信息进行处理,进而执行迭代生成新的轮密钥信息。
在本发明另一实施例中,所述子步骤1024可以包括:在轮密钥迭代生成过程中,确定当前轮密钥迭代生成过程对应的第二参数信息;按照已生成的轮密钥信息的顺序,确定最近生成的N个轮密钥信息;根据所述最近生成的N个轮密钥信息和所述当前轮密钥迭代生成过程对应的第二参数信息,生成下一个轮密钥信息。
在实际应用中,可以基于初始轮密钥信息进行轮密钥迭代生成过程,生成新的轮密钥信息,其中,在每一轮的轮密钥迭代生成过程,可以按照每个轮密钥信息的生成时间对已生成的轮密钥信息进行排序,进而可以采用最近生成的N个轮密钥信息和对应的第二参数进行轮密钥拓展运算,得到一个新的轮密钥信息。
具体的,基于第一参数生成的N个初始轮密钥信息可以按照生成时间的进行排序,作为第一个轮密钥信息、第二个轮密钥信息...第N个轮密钥信息,假设总共进行了M(M为大于等于2的正整数)次的轮密钥迭代生成过程:
在第一轮的轮密钥迭代生成过程中,将从第一个轮密钥信息至第N个轮密钥信息在内的N个轮密钥信息与第一轮的密钥生成过程所对应的第二参数信息进行轮密钥拓展运算,生成第N+1个轮密钥信息。
在第二轮的轮密钥迭代生成过程中,将从第二个轮密钥信息至第N+1 个轮密钥信息在内的N个轮密钥信息与第二轮的密钥生成过程所对应的第二参数信息进行轮密钥拓展运算,生成第N+2个轮密钥信息。
......
在第M轮的轮密钥迭代生成过程中,将从第M个轮密钥信息到第N +M-1个轮密钥信息的N个轮密钥信息和第M轮的密钥生成过程所对应的第二参数信息进行轮密钥拓展运算,生成第N+M个轮密钥信息。
依照上述规律(每N个最近连续生成的轮密钥信息与对应的第二参数信息可以生成下一个轮密钥信息)不断进行迭代生成新的轮密钥信息,直到完成M轮的轮密码迭代,最终一共得到N+M个轮密钥信息。
在一示例中,所述根据所述最近生成的N个轮密钥信息和所述当前轮密钥迭代生成过程对应的第二参数信息,生成下一个轮密钥信息,包括:
将所述最近生成的N-1个轮密钥信息和所述当前轮密钥迭代生成过程对应的第二参数信息进行异或运算,得到第一中间数据;将所述第一中间数据进行预设的函数运算,得到第二中间数据;将所述第二中间数据与从确定的最近生成的N个轮密钥信息中排序第一位的轮密钥信息进行异或运算,得到下一个的轮密钥信息。
其中,预设的函数可以是T函数,在T函数运算过程中,将所述第一中间数据进行分组得到多个第一子中间数据,根据每个第一子中间数据的字节排列在预设S盒中确定对应的行列,得到S盒置换后的第一S盒输出值,将多个第一S盒输出值进行组合,得到第一目标组合值,对所述第一目标组合值的各字节按照第一方向移动第一预设位,得到第一组合值,以及对所述目标组合值的各字节按照第二方向移动第二预设位,得到第二组合值;将所述目标组合值、第一组合值以及第二组合值进行异或运算,得到第二中间数据。
步骤103,在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,生成目标密文信息。
其中,目标密文信息为对待加密明文信息进行迭代加密后最终得到的数据,即加密后的数据。
在迭代生成多个轮密钥信息的过程中,开始通过已生成的轮密钥信息进行待加密明文信息的迭代加密,最终生成目标密文信息。
在实际应用中,加密算法可以是在轮密钥拓展运算结束后,才开始进行加解密运算,从而整个加密过程花费的时间T至少是轮密钥拓展运算的时间 T1与加解密运算的时间T2相加,即T≥T1+T2。
而本发明中,可以在轮密钥拓展运算过程中,开启加解密运算,使轮密钥拓展运算与加解密运算可以同步进行,T<T1+T2,从而缩短了加密时间,提高了加密效率。
以32轮的轮密钥运算过程为例:
(1)先进行轮密钥拓展运算,轮密钥拓展运算结束后进行加密运算:
轮密钥运算从第2个clk-第33个clk,每个clk运算出一个32bit(比特)的轮密钥,在轮密钥运算结束后,共32个轮密钥结果交付给加密核心进行加密运算.
加密核心收到轮密钥后进行开始加密运算,在加密运算的第34个clk 运算出一个128bit的加密结果。
从而,整个加密过程所花费的时间为:33+1+33+1=68clk(其中,中间的1+1是数据稳定过渡时间)
(2)先进行轮密钥拓展运算,在轮密钥拓展运算迭代生成轮密钥过程中开始进行加密运算:
根据轮密钥和生成顺序和使用方法,在加密运算中是按照轮密钥的生成顺序,在每个clk(每一轮加密过程中)使用一个轮密钥。
从而,可以在轮密钥拓展运算的第2个clk中,通过已生成第一个轮密钥后,在开始进行加密运算的第一个轮密钥参与的运算;可以在轮密钥拓展运算的第3个clk中,通过已生成第2个轮密钥后,在开始进行加密运算的第2个轮密钥参与的运算,依次轨迹进行迭代加密,直到完成第32个轮密钥参与的加密。
上述(2)的过程在如下表1所示,可以将整体的加密核心消耗时间缩短至34clk产生128bit加密结果。rki(i=0,1,...,31)表示轮密钥迭代生成过程中依次生成的轮密钥信息,xi(i=0,1,...,31)表示迭代加密过程中依次得到的子明文信息,xkey表示目标密文信息。
其中,rk0用于生成x0,rk2用于生成x2,依次类推,依次生成xi(i=0,1,..., 31)。
Figure BDA0003787087470000101
表1加密运算示意表
在一示例中,轮密码迭代生成过程的轮数和迭代加密过程的轮数可以相同;在迭代生成多个轮密钥信息的过程中,同时进行迭代加密,可以是在第二轮的轮密钥生成过程中,开始进行迭代加密过程,如表1中,32轮的迭代加密过程,从第二轮的轮密钥生成过程中,开始同步进行迭代加密,以缩短加密时间。
针对大于2轮的迭代加密过程,也可以从第三轮或第三轮之后的轮密钥生成过程中,开始进行迭代加密过程,以缩短加密时间。
其中,轮密码迭代过程与迭代加密过程至少存在一轮同步进行的过程。
在本发明一实施例中,所述步骤103可以包括以下子步骤:
子步骤1031,将所述待加密明文信息进行分组得到第一个子明文信息至第K个子明文信息;
其中,K为大于1的正整数。
在实际应用中,可以将包含多个字节的待加密明文信息按预设字节数进行分组,依次得到从第一个子明文信息至第K个子明文信息。K个子明文信息中的每一个子明文信息可以包含相同的字节数。
子步骤1032,在迭代加密过程中,从已生成的轮密钥信息中确定所述当前迭代加密过程对应的目标轮密码信息,并在生成所述目标轮密码信息对应的下一个轮密码信息的过程中,按照已生成的子明文信息的顺序,确定最近生成的K个子明文信息,并根据所述最近生成的K个子明文信息和所述目标轮密钥信息,生成下一个子明文信息;
在实际应用中,可以基于轮密钥信息进行待加密明文的迭代加密过程,生成新的子明文信息,以最终得到的目标密文信息。其中,在每一轮的迭代加密过程中,可以按照每个子明文信息的生成顺序对已生成的子明文信息进行排序,进而可以采用最近生成的N个子明文信息和对应的轮密钥信息进行加密运算,得到一个新的子明文信息。
具体的,假设总共进行了M(M为大于等于2的正整数)次的迭代加密过程:
在第一轮的轮密钥迭代生成过程后,此时可以得到第N+1轮密钥信息,第N+1轮密钥信息可以用于第一轮的迭代加密过程中。
从而,在轮密钥拓展运算进行第二轮的轮密钥迭代生成过程中,可以同时进行第一轮的跌代加密过程。在第一轮的迭代加密过程中,可以通过第一轮密钥生成过程中得到第N+1轮密钥信息对第一子明文信息至第K个子明文信息进行加密运算,从而生成第K+1个子明文信息。
......
在第M-1轮的轮密钥迭代生成过程后,在第M轮的轮密钥迭代生成过程中,在轮密钥拓展运算中生成第N+M个轮密钥信息,同时,在第M-1轮的迭代加密过程中,根据从第M-1个子明文信息到第K+M-2个子明文的K 个子明文信息和第N+M-1个轮密钥信息,生成第K+M-1个子明文信息。
在第M轮的轮密钥迭代生成过程后,在轮密钥拓展运算中生成第N+M 个轮密钥信息,此时,轮密码迭代生成过程结束。
在第M轮的迭代加密过程中,根据从第M个子明文信息到第K+M-2 个子明文的K个子明文信息和第N+M个轮密钥信息,生成第K+M个子明文信息,迭代加密过程结束。
依照上述迭代加密的规律(每K个最近连续生成的轮密钥信息与对应的轮密钥信息可以生成下一个子明文信息)不断进行迭代加密,得到新的子明文信息,直到完成M轮的迭代加密,最终一共得到K+M个子明文信息。
在一示例中,所述根据所述最近生成的K个子明文信息和所述目标轮密钥信息,生成下一个子明文信息,包括:
将所述最近生成的K-1个子明文信息和所述目标轮密钥信息进行异或运算,得到第三中间数据;将所述第三中间数据进行预设的函数运算,得到第四中间数据;将所述第四中间数据与从确定的最近生成的K个子明文信息中排序第一位的子明文信息进行异或运算,得到下一个的子明文信息。
其中,预设的函数可以是T函数,在T函数运算过程中,将所述第三中间数据进行分组得到多个第三子中间数据,根据每个第三子中间数据的字节排列在预设S盒中确定对应的行列,得到S盒置换后的第三S盒输出值,将多个第三S盒输出值进行组合,得到第三目标组合值,对所述第三目标组合值的各字节按照第一方向移动第一预设位,得到第三组合值,以及对所述目标组合值的各字节按照第二方向移动第二预设位,得到第四组合值;将所述第三目标组合值、第三组合值以及第四组合值进行异或运算,得到第四中间数据。
子步骤1033,根据所有已生成的子明文信息,生成目标密文信息。
当轮密钥拓展运算结束,生成最后一个轮密钥信息,在加密运算中,通过最后一个轮密钥信息迭代加密,生成最后一个子明文信息,根据在加密运算中所得到的所有子明文信息进行加密处理后,可得到目标密文信息。
在本发明一实施例中,子步骤1033可以包括:依照所有已生成的子明文信息的顺序,确定最近生成的K个子明文信息;对所述最近生成的K个子明文信息进行反序变换,得到目标密文信息。
在实际应用中,在得到最后一个子明文信息后,可以从所有生成的子明文信息中,可以选择最近生成K个子明文信息,将这个K个子明文信息通过反序变换进行加密处理,得到目标密文信息。
其中,反序变换是对信息的顺序进行调整以实现加密的手段。
例如,二进制数1101进行反序变换后,得到二进制数1011。
在本发明实施例中,通过获取待加密明文信息和用于对所述待加密明文信息进行加密的初始密钥信息,进而可以基于所述初始密钥信息,迭代生成多个轮密钥信息,以及在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,生成目标密文信息,实现了在生成轮密钥同时进行迭代加密,提高加密速度。
以下以视联网中密码机通过SM4分组密码算法进行加密的过程为例对本发明实施例进行示例性说明:
SM4分组密码算法为一个迭代分组密码算法,由轮密钥扩展运算和加解密运算组成。SM4分组密码算法采用非平衡Feistel结构,分组长度为 128bit(16byte),密钥长度为128bit(16byte)。
SM4分组密码算法的初始密钥信息的长度为128bit,表示为 MK=(MK0,MK1,MK2,MK3),其中,MKi(i=0,1,2,3)为4bytes(32bit),MKi表示为初始密钥信息分为四组后的子密钥信息。
轮密钥信息表示为(rk0,rk1,...,rk31),其中rki(i=0,1,...,31)为32b,轮密钥信息由初始密钥信息生成。
其中,FK=(FK1,FK2,FK3,FK4)为系统参数(即第一参数), CK=(CK0,CK1,...,CK31)为固定参数(即第二参数),用于轮密钥扩展算法,其中,FKi(i=0,1,...,3),CKi(i=0,1,...,31)均为32bit。
轮密钥拓展运算:(如图1b以及图1c所示)
将初始密钥信息的每个字(MKi)分别与系统参数的每个字(FKi)做异或运算得到(K0,K1,K2,K3)。
Figure BDA0003787087470000141
将得到的后3个字分别与固定参数CK0做异或运算后进行函数T运算得到值C,最后将函数T运算得到的C与K0做异或运算就得到了第一轮的子密钥(rk0),也是下一轮密钥运算的K4
进而,依照下式生成后续的轮密钥信息。
Figure BDA0003787087470000142
其中,函数T运算过程如下:
(1)经过后3个字与固定参数异或后,得到的值A也为32位的字。
(2)将A拆分为4个8bit的字节进行S盒变换。该S盒是一个固定的 8比特输入8比特输出的置换。
下表为一种S盒示例:
Figure BDA0003787087470000143
注:S盒变换过程与DES(Data Encryption Standard,数据加密标准) 的类似,将输入的8bit字节的前2位与后2位组合形成的值转换成16进制为S盒的行,也就是下标的x轴,中间的4位形成的值转换成的16进制为 S盒的列,也就是下标的y轴。根据x轴和y轴确定在S盒中查找。
将查找到的值转换成的2进制,即为该S盒的输出。
例:输入01100101,取前4位0110转换成16进制为6,也就是对应的 x轴为6。后4位的0101转换成16进制为5,对应的y轴也就为5。综合x,y找到上述S盒,输出的值为58,将58转换为二进制,即01011000。
(3)将中间4个S盒的输出组成32位的值B。
(4)将B与左移13位及左移23位的B进行异或处理作为函数T的输出C。
加解密运算:(如图1d所示)
将128bit的待加密明文信息分成4个32bit的字X1,X2,X3,X4(即子明文信息)。
将上述得到的字(Xi)进行32轮的轮操作,每次使用四个字与轮密钥拓展运算得到的轮密钥信息进行运算,得到下一个字。
将32轮操作完成后得到的最后的4个字进行反序变换后组成128bit的密文(即目标密文信息)。
需要说明的是,对于方法实施例,为了简单描述,故将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图2,示出了本发明一实施例提供的一种迭代加密的装置的结构示意图,具体可以包括如下模块:
信息获取模块201,用于获取待加密明文信息和用于对所述待加密明文信息进行加密的初始密钥信息;
轮密钥生成模块202,基于所述初始密钥信息,迭代生成多个轮密钥信息;
迭代加密模块203,用于在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,生成目标密文信息。
在本发明一实施例中,所述轮密钥生成模块202可以包括:
密钥分组子模块,用于将所述初始密钥进行分组得到N个子密钥信息;
第一参数获取子模块,用于获取所述N个子密钥信息对应的第一参数信息;
初始轮密钥生成子模块,用于根据所述N个子密钥信息和所述第一参数信息,生成从第一个轮密钥信息至第N个轮密钥信息的N个初始轮密钥信息;
轮密钥迭代子模块,用于基于所述N个初始轮密钥信息和预设的第二参数信息,迭代生成多个轮密钥信息。
在本发明一实施例中,所述轮密钥迭代子模块可以包括:
第二参数信息确定单元,用于在轮密钥迭代生成过程中,确定当前轮密钥迭代生成过程对应的第二参数信息;
最近轮密钥信息确定单元,用于按照已生成的轮密钥信息的顺序,确定最近生成的N个轮密钥信息;
轮密钥扩展单元,用于根据所述最近生成的N个轮密钥信息和所述当前轮密钥迭代生成过程对应的第二参数信息,生成下一个轮密钥信息。
在本发明一实施例中,所述迭代加密模块203可以包括:
明文分组子模块,用于将所述待加密明文信息进行分组得到第一个子明文信息至第K个子明文信息;
目标轮密钥确定子模块,用于在迭代加密过程中,从已生成的轮密钥信息中确定所述当前迭代加密过程对应的目标轮密码信息;
子明文生成子模块,用于在生成所述目标轮密码信息对应的下一个轮密码信息的过程中,按照已生成的子明文信息的顺序,确定最近生成的K个子明文信息,并根据所述最近生成的K个子明文信息和所述目标轮密钥信息,生成下一个子明文信息;
密文生成子模块,用于根据所有已生成的子明文信息,生成目标密文信息。
在本发明一实施例中,所述密文生成子模块可以包括:
子明文选取单元,用于依照所有已生成的子明文信息的顺序,确定最近生成的K个子明文信息;
反序变换单元,用于对所述最近生成的K个子明文信息进行反序变换,得到目标密文信息。
在本发明一实施例中,初始轮密钥生成子模块在用于根据所述N个子密钥信息和所述第一参数信息,生成N个初始轮密钥信息时,具体用于:
将每个子密钥信息与其对应的第一参数信息进行异或运算,得到初始轮密钥信息。
在本发明一实施例中,所述初始密钥信息为SM4分组密钥算法的密钥信息。
在本发明实施例中,通过获取待加密明文信息和用于对所述待加密明文信息进行加密的初始密钥信息,进而可以基于所述初始密钥信息,迭代生成多个轮密钥信息,以及在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,生成目标密文信息,实现了在生成轮密钥同时进行迭代加密,提高加密速度。
本发明一实施例还提供了一种电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上迭代加密的方法的步骤。
本发明一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上迭代加密的方法的步骤。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对所提供的一种迭代加密的方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种迭代加密的方法,其特征在于,所述方法包括:
获取待加密明文信息和用于对所述待加密明文信息进行加密的初始密钥信息;
基于所述初始密钥信息,迭代生成多个轮密钥信息;
在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,生成目标密文信息。
2.根据权利要求1所述的方法,其特征在于,所述基于所述初始密钥信息,迭代生成多个轮密钥信息,包括:
将所述初始密钥进行分组得到N个子密钥信息;
获取所述N个子密钥信息对应的第一参数信息;
根据所述N个子密钥信息和所述第一参数信息,生成从第一个轮密钥信息至第N个轮密钥信息的N个初始轮密钥信息;
基于所述N个初始轮密钥信息和预设的第二参数信息,迭代生成多个轮密钥信息。
3.根据权利要求2所述的方法,其特征在于,所述基于所述N个初始轮密钥信息和预设的第二参数信息,迭代生成多个轮密钥信息,包括:
在轮密钥迭代生成过程中,确定当前轮密钥迭代生成过程对应的第二参数信息;
按照已生成的轮密钥信息的顺序,确定最近生成的N个轮密钥信息;
根据所述最近生成的N个轮密钥信息和所述当前轮密钥迭代生成过程对应的第二参数信息,生成下一个轮密钥信息。
4.根据权利要求1或2或3所述的方法,其特征在于,所述在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,得到目标密文信息,包括:
将所述待加密明文信息进行分组得到第一个子明文信息至第K个子明文信息;
在迭代加密过程中,从已生成的轮密钥信息中确定所述当前迭代加密过程对应的目标轮密码信息;
在生成所述目标轮密码信息对应的下一个轮密码信息的过程中,按照已生成的子明文信息的顺序,确定最近生成的K个子明文信息,并根据所述最近生成的K个子明文信息和所述目标轮密钥信息,生成下一个子明文信息;
根据所有已生成的子明文信息,生成目标密文信息。
5.根据权利要求4所述的方法,其特征在于,所述根据所有已生成的子明文信息,生成目标密文信息,包括:
依照所有已生成的子明文信息的顺序,确定最近生成的K个子明文信息;
对所述最近生成的K个子明文信息进行反序变换,得到目标密文信息。
6.根据权利要求2所述的方法,其特征在于,所述根据所述N个子密钥信息和所述第一参数信息,生成从第一个轮密钥信息至第N个轮密钥信息的N个初始轮密钥信息,包括:
将每个子密钥信息与其对应的第一参数信息进行异或运算,得到初始轮密钥信息。
7.根据权利要求1所述的方法,其特征在于,所述初始密钥信息为SM4分组密码算法的密钥信息。
8.一种迭代加密的装置,其特征在于,所述装置包括:
信息获取模块,用于获取待加密明文信息和用于对所述待加密明文信息进行加密的初始密钥信息;
轮密钥生成模块,基于所述初始密钥信息,迭代生成多个轮密钥信息;
迭代加密模块,用于在迭代生成多个轮密钥信息的过程中,依照所述多个轮密钥信息的生成顺序依次对所述待加密明文信息进行迭代加密,生成目标密文信息。
9.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的迭代加密的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的迭代加密的方法。
CN202210945429.2A 2022-08-08 2022-08-08 一种迭代加密的方法和装置 Pending CN115459950A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210945429.2A CN115459950A (zh) 2022-08-08 2022-08-08 一种迭代加密的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210945429.2A CN115459950A (zh) 2022-08-08 2022-08-08 一种迭代加密的方法和装置

Publications (1)

Publication Number Publication Date
CN115459950A true CN115459950A (zh) 2022-12-09

Family

ID=84296896

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210945429.2A Pending CN115459950A (zh) 2022-08-08 2022-08-08 一种迭代加密的方法和装置

Country Status (1)

Country Link
CN (1) CN115459950A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116089989A (zh) * 2023-04-10 2023-05-09 广东广宇科技发展有限公司 一种用于离线数据端的数据迭代加密处理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116089989A (zh) * 2023-04-10 2023-05-09 广东广宇科技发展有限公司 一种用于离线数据端的数据迭代加密处理方法
CN116089989B (zh) * 2023-04-10 2023-08-01 广东广宇科技发展有限公司 一种用于离线数据端的数据迭代加密处理方法

Similar Documents

Publication Publication Date Title
US10164771B2 (en) Encryption method and encryption device
US7907725B2 (en) Simple universal hash for plaintext aware encryption
KR100657062B1 (ko) 정보 암호화 방법 및 이 방법을 실현하는 장치
US8577032B2 (en) Common key block encryption device, common key block encryption method, and program
US20020101996A1 (en) Variable-length key cryptosystem
JPH0863097A (ja) データを暗号化するための対称暗号化方法およびシステム
JPH11509940A (ja) データブロックおよび鍵を非線形的に結合する暗号方法および装置
JPH10171350A (ja) ハッシュ値生成方法および装置
KR102154164B1 (ko) 의사 랜덤 시퀀스 생성 방법 및 데이터 스트림의 코딩 또는 디코딩 방법
Kumar et al. Lightweight data security model for IoT applications: a dynamic key approach
CN115459950A (zh) 一种迭代加密的方法和装置
US6301361B1 (en) Encoding and decoding information using randomization with an alphabet of high dimensionality
Mandal et al. An adaptive genetic key based neural encryption for online wireless communication (AGKNE)
Mandal et al. An adaptive neural network guided secret key based encryption through recursive positional modulo-2 substitution for online wireless communication (ANNRPMS)
CN107493164B (zh) 一种基于混沌系统的des加密方法和系统
CN116132016A (zh) 一种密码算法的加性扩展实现方法
CN115632765A (zh) 加密方法、解密方法、装置、电子设备及存储介质
CN114826558A (zh) 一种海量数据快速加密方法及系统
Sharma et al. On security of Hill cipher using finite fields
US8204219B2 (en) Cryptographic method and apparatus for enhancing computation performance of a central processing unit
Labbi et al. Symmetric encryption algorithm for RFID systems using a dynamic generation of key
JPH0895490A (ja) 秘密鍵暗号方法及び装置
RU2775253C1 (ru) Способ криптографического преобразования с одновременной выработкой производного ключа шифрования
CN117114959B (zh) 基于多参数一维混沌系统的秘钥反馈机制的图像加密方法
Kumar et al. Enhanced cost effective symmetric key algorithm for small amount of data

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination