CN115567189A - 一种加密方法、解密方法及装置 - Google Patents
一种加密方法、解密方法及装置 Download PDFInfo
- Publication number
- CN115567189A CN115567189A CN202211085085.9A CN202211085085A CN115567189A CN 115567189 A CN115567189 A CN 115567189A CN 202211085085 A CN202211085085 A CN 202211085085A CN 115567189 A CN115567189 A CN 115567189A
- Authority
- CN
- China
- Prior art keywords
- ciphertext
- plaintext
- vector
- dynamic vector
- preset
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例提供了一种加密方法、解密方法及装置。该加密方法可以包括:获取一个预设数据量大小的随机数;将所述随机数与预设初始化向量进行异或运算,获得初始动态向量;通过计数器对所述初始动态向量进行N次累加操作,获得N个中间动态向量;根据预设原始密钥和所述N个中间动态向量,对待加密明文进行并行分组加密,获得明文密文;根据所述预设原始密钥和所述初始动态向量,获得动态向量密文;将所述明文密文与所述动态向量密文组成最终密文。本申请实施例提供的技术方案,能够解决现有技术中计数器模式下的分组加解密方式存在安全性低问题。
Description
技术领域
本申请属于数据安全技术领域,具体涉及一种加密方法、解密方法及装置。
背景技术
随着电子信息技术的飞速发展,将数据以电子形式进行传输,已成为普遍使用的技术手段。
现有技术中,通常采用加密方式,提高电子数据传输的安全性。其中,高级加密标准(Advanced Encryption Standard,AES)是目前使用较多的一种加密标准。
在AES标准规范下,目前流行的分组加解密模式中包括计数器模式(countermode,CTR模式)。该模式具有并行计算,加解密效率高,且不传递误差的优点,但也存在一定缺点,该模式下是通过计数器对初始化向量进行累加操作,获得参与每组明文加密的中间向量,而初始化向量需明文传输,安全性偏低。
发明内容
本申请实施例的目的是提供一种加密方法、解密方法及装置,以解决现有技术中计数器模式下的分组加解密方式存在安全性低的问题。
第一方面,本申请实施例提供了一种加密方法,所述方法包括:
获取一个预设数据量大小的随机数;
将所述随机数与预设初始化向量进行异或运算,获得初始动态向量;
通过计数器对所述初始动态向量进行N次累加操作,获得N个中间动态向量;
根据预设原始密钥和所述N个中间动态向量,对待加密明文进行并行分组加密,获得明文密文;
根据所述预设原始密钥和所述初始动态向量,获得动态向量密文;
将所述明文密文与所述动态向量密文组成最终密文。
第二方面,本申请实施例提供了一种解密方法,所述方法包括:
接收目标密文;
在所述目标密文中,获取动态向量密文;
根据预设原始密钥和所述动态向量密文,获得所述初始动态向量;
通过计数器对所述初始动态向量进行N次累加操作,获得所述N个中间动态向量;
根据所述预设原始密钥和所述N个中间动态向量,对所述目标密文中的明文密文,进行并行分组解密,获得解密明文。
第三方面,本申请实施例提供了一种加密装置,所述装置包括:
第一获取模块,用于获取一个预设数据量大小的随机数;
第一向量获取模块,用于将所述随机数与预设初始化向量进行异或运算,获得初始动态向量;
第二向量获取模块,用于通过计数器对所述初始动态向量进行N次累加操作,获得N个中间动态向量;
第一加密模块,用于根据所述预设原始密钥和所述N个中间动态向量,对待加密明文进行并行分组加密,获得明文密文;
第二加密模块,用于根据所述预设原始密钥和所述初始动态向量,获得动态向量密文;
密文处理模块,用于将所述明文密文与所述动态向量密文组成最终密文。
第四方面,本申请实施例提供了一种解密装置,所述装置包括:
接收模块,用于接收目标密文;
第二获取模块,用于在所述目标密文中,获取动态向量密文;
第一解密模块,用于根据预设原始密钥和所述动态向量密文,获得所述初始动态向量;
第三向量获取模块,用于通过计数器对所述初始动态向量进行N次累加操作,获得所述N个中间动态向量;
第二解密模块,用于根据所述预设原始密钥和所述N个中间动态向量,对所述目标密文中的明文密文,进行并行分组解密,获得解密明文。
第五方面,本申请实施例提供一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的加密方法中的步骤,或实现如第二方面所述的解密方法中的步骤。
第六方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的加密方法中的步骤,或实现如第二方面所述的解密方法中的步骤。
本申请实施例提供的技术方案,相对于现有计数器模式下的分组加解密方式,不再是通过计数器对初始化向量进行累加操作,获得用于参与每组明文加密的中间向量,而是先由初始化向量与一随机数进行异或运算得到初始动态向量,再通过计数器对该初始动态向量进行累加操作,获得用于参与每组明文加密的中间向量(即中间动态向量)。这样处理,首先使得该初始动态向量代替初始化向量成为关键解密元素之一,因此密文传输过程中,不再需要传输初始化向量,而是需要传输该初始动态向量,且本申请实施例可以对该初始动态向量进行分组加密,使得初始动态向量在传输过程中不可见,增大了破解难度,解决了现有计数器模式下,明文传输初始化向量的问题,提升了数据的安全性。
附图说明
图1为本申请实施例提供的加密方法的流程示意图;
图2为本申请实施例提供的加密流程的示意图之一;
图3为本申请实施例提供的加密流程的示意图之二;
图4为本申请实施例提供的解密方法的流程示意图;
图5为本申请实施例提供的解密流程的示意图之一;
图6为本申请实施例提供的解密流程的示意图之二;
图7为本申请实施例提供的加密装置的示意框图;
图8为本申请实施例提供的解密装置的示意框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,均属于本申请保护的范围。
应理解,说明书中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本申请的各种实施例中,应理解,步骤的序号并不意味着绝对的先后执行顺序,各步骤的执行顺序应以其功能和内在逻辑进行确定,因此,各步骤的序号不应对本申请实施例的实施过程构成绝对的限定。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的加密方法进行详细地说明。
本申请实施例提供了一种加密方法,应用于第一电子设备,该第一电子设备可以是服务器或终端设备,也就是说该加密方法中的步骤可以由服务器执行,也可以由终端设备执行。
如图1所示,该加密方法可以包括:
步骤101:获取一个预设数据量大小的随机数。
该随机数可以是由设备自动生成的,也可以是人为手动输入的。
这里所述的预设数据量大小可以是128位(bit),即16个字节(Byte)。该随机数可以是由128个二进制数组成,也可以是由32个16进制数组成,还可以是其他进制数组成。
步骤102:将获取的随机数与预设初始化向量进行异或运算,获得初始动态向量。
其中,这里所述的预设初始化向量是指密码学领域里的初始化向量(Initialization Vector,IV),一般该初始化向量为随机数或拟随机数。在本申请实施例中,该初始化向量可以是128位,即16个字节。
假设,获取的随机数用PSJ表示,预设初始化向量用IV表示(以下可简称为初始化向量IV),初始动态向量用IV0表示(以下可简称为动态向量IV0)。如图2或图3所示,初始化向量IV与随机数PSJ进行异或运算,可得动态向量IV0(也就是动态向量初始值),即:IV0=PSJ⊕IV。
其中,该初始动态向量用于获得对待加密明文(即待加密数据)进行分组加密时使用的中间动态向量,具体可见步骤103。
步骤103:通过计数器对初始动态向量进行N次累加操作,获得N个中间动态向量。
本申请实施例中,在获得初始动态向量后,可以通过计数器对初始动态向量进行累加操作,从而获得用于对待加密明文进行分组加密的向量(即中间动态向量)。其中,每次累加操作获得一个中间动态向量,每次累加操作时计数值可以加1。
假设中间动态向量用IVi表示,则:
基于上述公式,可得N个中间动态向量,即:IV1、IV2、IV3、……、IVN。其中,IVi表示第i次累加操作得到的中间动态向量,1≤i≤N。
其中,在分组加密算法中,需要将待加密明文分为若干组,而中间动态向量的个数与待加密明文的分组数相同,一个中间动态向量参与一组明文的加密,也就是说N的取值取决于待加密明文的分组数,N≥1。
步骤104:根据预设原始密钥和N个中间动态向量,对待加密明文进行并行分组加密,获得明文密文。
本申请实施例中,在获得N个中间动态向量后,则可以根据中间动态向量和预设原始密钥(可简称为原始密钥),对待加密明文进行并行分组加密,从而获得明文密文。其中,并行加密计算方式,复杂度较低,加密效率高。
其中,该预设原始密钥为加密方和解密方预先约定好的,一般固定不变。若需变动,加密方和解密方可重新约定。
其中,分组加密过程一般包括:字节替换、行移位、列混淆和轮密钥加四个过程。
步骤105:根据预设原始密钥和初始动态向量,获得经过分组加密处理的动态向量密文。
由于中间动态向量是由初始动态向量获得的,为使密文接收方可以对密文进行解密,需将初始动态向量发送至密文接收方,而为了提高初始动态向量传输的安全性,本申请实施例中也可以对初始动态向量进行分组加密,获得动态向量密文。
步骤106:将明文密文与动态向量密文组成最终密文。
最后,将明文密文与动态向量密文拼接在一起,则可获得最终密文。之后,则可以将最终密文发送至密文接收方,即解密方。
本申请实施例提供的加密方法,在分组加密的计数器模式基础上,进行了改进,不再通过计数器对初始化向量进行累加操作,获得用于参与每组明文加密的中间向量,而是先由初始化向量与一随机数进行异或运算得到初始动态向量,再通过计数器对初始动态向量进行累加操作,获得用于参与每组明文加密的中间向量(即中间动态向量)。这样处理,首先使得该初始动态向量代替初始化向量成为关键解密元素之一,因此密文传输过程中,不再需要传输初始化向量,而是需要传输该初始动态向量,且本申请实施例可以对该初始动态向量进行分组加密,使得初始动态向量在传输过程中不可见,增大了破解难度,解决了现有计数器模式下,明文传输初始化向量的问题,提升了数据的安全性。
作为一种可选实施例,步骤101中所述的随机数可以是通过第一预设算法生成的一个全局唯一标识符(Globally Unique Identifier,GUID),这样可以提高随机数的唯一性,从而提高初始动态向量的唯一性,减小重放攻击风险。此外,由于该随机数由算法生成,不依赖于人为输入,因此可以规避人为保证随机数唯一的风险。其中,第一预设算法可根据实际需求选择,本申请实施例对此不进行限定。
可选地,该随时数可以是由当前电子设备生成的,因此,在步骤101:获取一个预设数据量大小的随机数之前,该加密方法还可以包括:根据第一预设算法,生成一个全局唯一标识符,将该全局唯一标识符确定为随机数。
作为一种可选实施例,步骤105:根据预设原始密钥和初始动态向量,获得经过分组加密处理的动态向量密文,可以包括:
根据预设原始密钥,对初始动态向量进行分组加密,获得动态向量密文。
如图2所示,本申请实施例中,动态向量密文可以是通过原始密钥,对动态向量IV0(即初始动态向量)进行分组加密得到的。假设,动态向量密文用CIV0表示,则CIV0=E(IV0),其中E表示分组加密函数。
由于分组加密方式相对来说安全性更高,因此,通过分组加密方式对初始动态向量进行加密,可以提高初始动态向量传输的安全性。
作为一种可选实施例,步骤105:根据预设原始密钥和初始动态向量,获得经过分组加密处理的动态向量密文,可以包括:
根据预设原始密钥,对初始动态向量进行分组加密,获得中间向量密文;将中间向量密文与预设初始化向量进行异或运算,获得最终的动态向量密文。
如图3所示,本申请实施例中,还可以先通过原始密钥对动态向量IV0(即初始动态向量)进行分组加密,得到中间向量密文,再由中间向量密文与初始化向量IV进行异或运算,获得动态向量密文CIV0,即: 其中E表示分组加密函数。
该实施例中,不仅采用了安全性相对来说更高的分组加密方式,还使分组加密的结果(即中间向量密文)与初始化向量进行异或运算,来得到最终的动态向量密文,这样,解密方需要使用初始化向量和加密密钥,才能获得初始动态向量,进一步提高了动态向量密文的破解难度,提升了初始动态向量传输的安全性。
该实施例中,初始化向量是解密动态向量密文的关键元素之一,因此,加密方和解密方可以预先对初始化向量进行约定,这样可以省去初始化向量的传输,避免初始化向量的泄露。一般,该初始化向量约定好后,则固定不变。当需要变动时,加密方和解密方可以重新进行约定。
作为一种可选实施例,步骤104:根据预设原始密钥和N个中间动态向量,对待加密明文进行并行分组加密,获得明文密文,可以包括:
步骤A1:按照每组预设数据量大小,将待加密明文进行分组,获得N个明文分组。
在AES标准规范中,明文的分组大小(或分组长度)只能是128位,因此该预设数据量大小可以是128位,即16个字节。
在对待加密明文分组时,可以按16个字节(每个字节8位,共128位)为一组进行分组。对于最后一个分组,若不足16个字节,则执行填充操作,将其补齐16个字节。具体填充策略为:缺少n个字节,则补充n个0或n个n,即:缺少3个字节,则补充3个0或3个3(16进制)。对于最后一个分组,若是16个字节,则也需再填充16个字节,具体填充策略为:填充16个0或16个16(16进制)。这样处理的主要目的是:在对加密明文解密后,可以基于填充策略,辨别出哪些是填充的数据,从而将填充数据去掉,得到实际明文内容。
其中,N个明文分组中包括最后补充的分组。
步骤A2:将该N个明文分组中的每组明文与一个对应的中间动态向量进行异或运算,获得N组中间明文密文。
本申请实施例中,在完成待加密明文分组后,可以将每组明文与对应的一个中间动态向量进行异或运算,获得N组中间明文密文。
一般,每组明文与中间动态向量为顺序对应关系,即:第一组明文对应第一个得到的中间动态向量(即动态向量IV1),第二组明文对应第二个得到的中间动态向量(即动态向量IV2),……,第N组明文对应第N个得到的中间动态向量(即动态向量IVN)。
假设,对待加密明文分组后,得到N组明文,分别为:明文P1、P2、……、PN。如图2或图3所示,每组明文与对应的中间动态向量(即动态向量IV1、IV2、……、PN)进行异或运算,得到中间明文密文。
步骤A3:根据第二预设算法,对预设原始密钥进行扩展,获得M个扩展密钥。
在分组加密算法中,可以通过第二预设算法(如密钥编排函数),将预设原始密钥扩展为M个扩展密钥。第二预设算法可根据实际需求选择,本申请实施例对此不进行具体限定。
在AES标准规范中,密钥的长度可以是128位、192位或256位,因此,本申请实施例中所述的预设原始密钥的长度可以是128位、192位或256位。而M的取值与预设原始密钥的大小有关。在预设原始密钥为128位时,M取值为10;在预设原始密钥为192位时,M取值为12;在预设原始密钥为256位时,M取值为14。
步骤A4:根据M个扩展密钥,分别对每组中间明文密文进行并行分组加密,获得N组加密的明文。
如图2或图3所示,本步骤中可以利用扩展密钥,对每组中间明文密文进行分组加密过程,经过多轮变化后,得到N组加密的明文,即明文密文C1、C2、……、CN。
步骤A5:将N组加密的明文进行拼接,组成最终的明文密文。
最后,将N组加密的明文进行拼接处理,则可以得到组成最终的明文密文。
作为一种可选实施例,步骤104:根据预设原始密钥和N个中间动态向量,对待加密明文进行并行分组加密,获得明文密文,可以包括:
步骤B1:按照每组预设数据量大小,将待加密明文进行分组,获得N个明文分组。
步骤B2:根据第二预设算法,对预设原始密钥进行扩展,获得M个扩展密钥。
步骤B3:根据M个扩展密钥,分别对每个中间动态向量进行并行分组加密,获得中间动态向量密文。
步骤B4:将每组明文与一个对应的中间动态向量密文进行异或运算,获得N组加密的明文。
步骤B5:将N组加密的明文进行拼接,组成最终的明文密文。
该实施例与前一实施例的区别在于:前一实施例是对每组明文与中间动态向量的异或运算结果进行并行分组加密,而该实施例则是先对中间动态向量进行并行分组加密,然后再将每组明文与加密后的中间动态向量进行异或运算,获得最终明文密文。两种实现方式可根据实际需求选择。
作为一种可选实施例,步骤106:将明文密文与动态向量密文组成最终密文,可以包括:
将动态向量密文放置于预设位置处,与N组明文密文组成最终密文。
这里所述的预设位置为分组位置,即:分组排列位置,可以表示为第X个分组位置。
其中,X可以取值为1,即将动态向量密文放置于第一个分组位置,也就是将动态向量密文放置于N组明文密文的头部,如{CIV0,C1,C2,……,CN};X也可以取值为N+1,也就是将动态向量密文放置于N组明文密文的尾部,如{C1,C2,……,CN,CIV0};当然,X也可以取1至N+1之间的一个数值,也就是将动态向量密文放置于N组明文密文之间的某个位置,如{C1,C2,CIV0,……,CN},具体情况可根据实际需求选择。
其中,加密方和解密方可预先约定好该预设位置,以便解密方可以准确获取到动态向量密文。
最后,再对本申请实施例提供的加密方法的应用场景进行举例说明。
例如,客户端A是运行商甲的掌上营业厅,是一款面向智能手机用户的自助服务软件。随着互联网的发展,线上进行的业务办理、帮助支持、活动促销,变得越来越方便快捷,因此,客户端A不可避免的需要与各服务提供商进行单点和用户信息传输,而应网络信息安全的要求,涉及用户的信息不能在公网上明文传输,这种场景下则可采用本申请实施例提供的加密方法,对用户信息(对应前文所述的待加密明文)进行加密传输,从而提高用户信息传输的安全性。
具体地,客户端A作为发送者,首先通过本申请实施例提供的加密方法对用户信息进行加密,并以参数的形式拼装到服务提供商系统的接收地址,然后重定向到服务提供商地址。服务提供商作为接收者,接收客户端A的请求,对参数进行解密,获取用户信息,完成业务逻辑。
其中,客户端A和服务提供商之间可以约定共同的密钥(对应前文所述的预设原始密钥),必要时,还可以约定共同的初始化向量(对应前文所述的预设初始化向量)。
以上即为对本申请实施例提供的加密方法的描述。
本申请实施例针对前文描述的加密方法,还提供了一种对应的解密方法,应用于第二电子设备,该第二电子设备可以是服务器或终端设备,也就是说该加密方法中的步骤可以由服务器执行,也可以由终端设备执行。
如图4所示,该解密方法可以包括:
步骤401:接收目标密文。
第一电子设备在完成对待加密明文加密后,可以将最终密文(即包括明文密文和动态向量密文的目标密文)发送至密文接收方,即第二电子设备。
其中,该明文密文是基于前述步骤104获得的,该动态向量密文为基于前述步骤105获得的。
步骤402:在目标密文中,获取动态向量密文。
第二电子设备在接收到目标密文后,可以从目标密文中获取动态向量密文。
步骤403:根据预设原始密钥和动态向量密文,获得经过分组解密处理的初始动态向量。
在从目标密文中获得动态向量密文后,则可以根据预设原始密钥(可简称为原始密钥)和动态向量密文,获得经过分组解密处理的初始动态向量。该初始动态向量用于获得对明文密文(即待解密数据)进行分组解密时使用的中间动态向量。
其中,这里所述预设原始密钥是加密方和解密方预先约定好的。
步骤404:通过计数器对初始动态向量进行N次累加操作,获得N个中间动态向量。
本申请实施例中,在获得初始动态向量后,可以通过计数器对初始动态向量进行累加操作,从而获得用于对待加密明文进行分组加密的向量(即中间动态向量)。其中,每次累加操作获得一个中间动态向量,每次累加操作时计数值可以加1。
假设初始动态向量用IV0表示(以下可简称为动态向量IV0),中间动态向量用IVi表示,则:
基于上述公式,可得N个中间动态向量,即:IV1、IV2、IV3、……、IVN。其中,IVi表示第i次累加操作得到的中间动态向量,1≤i≤N。
其中,在分组解密算法中,需要将明文密文分为若干组,而中间动态向量的个数与明文密文的分组数相同,一个中间动态向量参与一组明文密文的解密,也就是说N的取值取决于明文密文的分组数,N≥1。
步骤405:根据预设原始密钥和N个中间动态向量,对目标密文中的明文密文,进行并行分组解密,获得解密明文。
本申请实施例中,在获得N个中间动态向量后,则可以根据中间动态向量和预设原始密钥,对明文密文进行并行分组解密,从而获得解密后的明文。其中,并行解密计算方式,复杂度较低,加密效率高。
由本申请实施例提供的解密方法可知,若想对明文密文进行解密,需先对动态向量密文解密获得初始动态向量。由于初始动态向量进行了加密处理,这使其在传输过程中不可见,即使攻击者截获了目标密文,也难以直接从密文中获取相同向量,增大了破解难度。而密文接收方由于拥有解密密钥,因此可以对动态向量密文进行解密,从而获得初始动态向量。这种处理方式可以解决现有计数器模式下,明文传输初始化向量的问题,提升了数据的安全性。
作为一种可选实施例,在动态向量密文是根据预设原始密钥对初始动态向量进行分组加密得到的情况下,步骤403:根据预设原始密钥和动态向量密文,获得初始动态向量,可以包括:
根据预设原始密钥,对动态向量密文进行分组解密,获得初始动态向量。如图5所示,在解密过程中,动态向量IV0(即初始动态向量)可以由原始密钥对动态向量密文CIV0进行分组解密得到,即:IV0=D(CIV0),其中D表示分组解密函数。
作为一种可选实施例,在动态向量密文是先根据预设原始密钥对初始动态向量进行分组加密,再与预设初始化向量进行异或运算得到的情况下,步骤403:根据预设原始密钥和动态向量密文,获得初始动态向量,可以包括:
将动态向量密文与预设初始化向量进行异或运算,获得中间向量密文;根据预设原始密钥,对中间向量密文进行分组解密,获得初始动态向量。
如图6所示,在解密过程中,动态向量IV0(即初始动态向量)可以先由动态向量密文CIV0与初始化向量IV进行异或运算,得到中间向量密文,再由原始密钥对中间向量密文进行分组解密得到,即:其中D表示分组解密函数。
该实施例中,初始化向量是解密动态向量密文的关键元素之一,因此,加密方和解密方可以预先对初始化向量进行约定,这样可以省去初始化向量的传输,避免初始化向量的泄露。一般,该初始化向量约定好后,则固定不变。当需要变动时,加密方和解密方可以重新进行约定。
作为一种可选实施例,对于前述步骤A1至A5所述的加密步骤,本申请实施例提供了对应的解密步骤,具体请见步骤C1至C5。
步骤405:根据预设原始密钥和N个中间动态向量,对目标密文中的明文密文,进行并行分组解密,获得解密明文,可以包括:
步骤C1:在目标密文中获得N组预设数据量大小的明文密文。
在AES标准规范中,明文的分组大小(或分组长度)只能是128位,而每组明文密文的长度与每组明文的长度相同,因此该预设数据量大小可以是128位,即16个字节。
其中,明文密文的组数与明文组数(包括填充的分组)也相同。
步骤C2:根据第二预设算法,对预设原始密钥进行扩展,获得M个扩展密钥。
在分组解密算法中,可以通过第二预设算法(如密钥编排函数)。将预设原始密钥扩展为M个扩展密钥。第二预设算法可根据实际需求选择,本申请实施例对此不进行具体限定。
M的取值与预设原始密钥的大小有关。在预设原始密钥为128位时,M取值为10;在预设原始密钥为192位时,M取值为12;在预设原始密钥为256位时,M取值为14。
步骤C3:根据M个扩展密钥,分别对每组明文密文进行分组解密,获得N组中间明文密文。
如图5或图6所示,本步骤中可以利用扩展密钥,对每组明文密文(如C1、C2、……、CN)进行分组解密过程,经过多轮变化后,得到各组中间明文密文,即:中间明文密文i=D(Ci),中间明文密文i表示第i组中间明文密文,Ci表示第i组明文密文,D表示分组解密函数,1≤i≤N。
步骤C4:将每组中间明文密文与一个对应的中间动态向量进行异或运算,获得N组解密后的明文。
如图5或图6所示,在获得N组中间明文密文后,可以将每组中间明文密文与对应的一个中间动态向量(即动态向量IV1、IV2、……、IVN)进行异或运算,获得N组解密后的明文(即明文P1、P2、……、PN),即 Pi表示第i组明文。
一般,每组中间明文密文与中间动态向量为顺序对应关系,即:第一组中间明文密文对应第一个得到的中间动态向量(即动态向量IV1),第二组明文对应第二个得到的中间动态向量(即动态向量IV2),……,第N组明文对应第N个得到的中间动态向量(即动态向量IVN)。
步骤C5:将N组解密后的明文组成最终的解密明文。
最后,将N组解密后的明文进行顺序拼接,则可以得到最终的解密明文。
作为一种可选实施例,对于前述步骤B1至B5所述的加密步骤,本申请实施例提供了对应的解密步骤,具体请见步骤D1至D5。
步骤405:根据预设原始密钥和N个中间动态向量,对目标密文中的明文密文,进行并行分组解密,获得解密明文,可以包括:
步骤D1:在目标密文中获得N组预设数据量大小的明文密文。
步骤D2:根据第二预设算法,对预设原始密钥进行扩展,获得M个扩展密钥。
步骤D3:根据M个扩展密钥,对每个中间动态向量进行分组加密,获得中间动态向量密文。
步骤D4:将每组明文与一个对应的中间动态向量密文进行异或运算,获得N组解密后的明文。
步骤D5:将N组解密后的明文组成最终的解密明文。
该实施例所述的解密步骤与前一实施例所述的解密步骤的区别在于:前一实施例是先对每组明文密文进行分组解密,获得中间明文密文,再将中间明文密文与对应的中间动态向量进行异或运算,得到解密后的明文。而该实施例则是先对每个中间动态向量进行分组加密,获得中间动态向量密文;再将每组明文密文与对应的中间动态向量密文进行异或运算,得到解密后的明文。
作为一种可选实施例,步骤403:在目标密文中,获取动态向量密文,可以包括:
按照每组预设数据量大小,将目标密文划分为N+1个分组密文;将预设位置处的分组密文,确定为动态向量密文。
这里所述的预设位置为分组位置,即:分组排列位置,可以表示为第X个分组位置。
其中,X可以取值为1,即将动态向量密文处于第一个分组位置,如{CIV0,C1,C2,……,CN};X也可以取值为N+1,也就是将动态向量密文处于最后一个分组位置,如{C1,C2,……,CN,CIV0};当然,X也可以取1至N+1之间的一个数值,也就是将动态向量密文处于N组明文密文之间的某个位置,如{C1,C2,CIV0,……,CN},具体情况可根据实际需求选择。其中,加密方和解密方可预先约定好该预设位置,以便解密方可以准确获取到动态向量密文。
以上即为对本申请实施例提供的加密方法的描述。
综上所述,本申请实施例中,对待加密明文进行加密时,是先根据初始化向量和获得的随机数,得到初始动态向量,之后再使初始动态向量和计数器运算,得到中间动态向量,然后中间动态向量再与待加密明文之间进行并行分组加密,得到明文密文。而对于初始动态向量,也会对其进行分组加密处理,并将加密后的初始动态向量(即动态向量密文)与明文密文一同发送至密文接收方。密文接收方接收到密文(即目标密文)后,需要先对动态向量密文解密,获得初始动态向量,之后才可以根据初始动态向量和预设原始密钥,对明文密文进行解密。
这样处理,首先使得该初始动态向量代替初始化向量成为关键解密元素之一,因此密文传输过程中,不再需要传输初始化向量,而是需要传输该初始动态向量,且本申请实施例可以对该初始动态向量进行分组加密,使得初始动态向量在传输过程中不可见,增大了破解难度,解决了现有计数器模式下,明文传输初始化向量的问题,提升了数据的安全性。
以上介绍了本申请实施例提供的加密方法和解密方法,下面将结合附图介绍本申请实施例提供的加密装置和解密装置。
如图7所示,本申请实施例还提供了一种与前面所述的加密方法对应的加密装置,应用于第一电子设备。
其中,所述加密装置可以包括:
第一获取模块701,用于获取一个预设数据量大小的随机数。
第一向量获取模块702,用于将所述随机数与预设初始化向量进行异或运算,获得初始动态向量。
第二向量获取模块703,用于通过计数器对所述初始动态向量进行N次累加操作,获得N个中间动态向量。
第一加密模块704,用于根据预设原始密钥和所述N个中间动态向量,对待加密明文进行并行分组加密,获得明文密文。
第二加密模块705,用于根据所述预设原始密钥和所述初始动态向量,获得经过分组加密处理的动态向量密文。
密文处理模块706,用于将所述明文密文与所述动态向量密文组成最终密文。
可选地,所述加密装置还可以包括:
生成模块,用于根据第一预设算法,生成一个全局唯一标识符。
确定模块,用于将所述全局唯一标识符确定为所述随机数。
可选地,所述第二加密模块705可以包括:
第一加密单元,用于根据所述预设原始密钥,对所述初始动态向量进行分组加密,获得所述动态向量密文。
可选地,所述第二加密模块705可以包括:
第二加密单元,用于根据所述预设原始密钥,对所述初始动态向量进行分组加密,获得中间向量密文。
第三加密单元,用于将所述中间向量密文与所述预设初始化向量进行异或运算,获得所述动态向量密文。
可选地,所述第一加密模块704可以包括:
第一分组单元,用于按照每组所述预设数据量大小,将待加密明文进行分组,获得N个明文分组。
第四加密单元,用于将所述N个明文分组中的每组明文与一个对应的所述中间动态向量进行异或运算,获得N组中间明文密文。
第一密钥处于单元,用于根据第二预设算法,对所述预设原始密钥进行扩展,获得M个扩展密钥。
第五加密单元,用于根据所述M个扩展密钥,分别对每组所述中间明文密文进行并行分组加密,获得N组加密的明文;
密文处理单元,用于将所述N组加密的明文进行拼接,组成最终的所述明文密文。
本申请实施例提供的加密装置能够实现图1所示方法实施例中加密方法实现的各个过程,为避免重复,这里不再赘述。
如图8所示,本申请实施例针对前文描述的解密方法,还提供了一种对应的解密装置,应用于第二电子设备。
其中,所述解密装置可以包括:
接收模块801,用于接收目标密文。
第二获取模块802,用于在所述目标密文中,获取动态向量密文。
第一解密模块803,用于根据预设原始密钥和所述动态向量密文,获得经过分组解密处理的所述初始动态向量。
第三向量获取模块804,用于通过计数器对所述初始动态向量进行N次累加操作,获得所述N个中间动态向量。
第二解密模块805,用于根据所述预设原始密钥和所述N个中间动态向量,对所述目标密文中的明文密文,进行并行分组解密,获得解密明文。
可选地,在所述动态向量密文是根据所述预设原始密钥对所述初始动态向量进行分组加密得到的情况下,所述第一解密模块803可以包括:
第一解密单元,用于根据所述预设原始密钥,对所述动态向量密文进行分组解密,获得所述初始动态向量。
可选地,在所述动态向量密文是先根据所述预设原始密钥对所述初始动态向量进行分组加密,再与预设初始化向量进行异或运算得到的情况下,所述第一解密模块803可以包括:
第六加密单元,用于将所述动态向量密文与所述预设初始化向量进行异或运算,获得中间向量密文。
第二解密单元,用于根据所述预设原始密钥,对所述中间向量密文进行分组解密,获得所述初始动态向量。
可选地,在待加密明文是先与所述中间动态向量进行异或运算,再通过所述预设原始密钥进行分组加密得到的情况下,所述第二解密模块805可以包括:
第二分组单元,用于在所述目标密文中获得N组所述预设数据量大小的明文密文;
第二密钥处于单元,用于根据第二预设算法,对所述预设原始密钥进行扩展,获得M个扩展密钥;
第三解密单元,用于根据所述M个扩展密钥,分别对每组所述明文密文进行并行分组解密,获得N组中间明文密文;
第四解密单元,用于将每组所述中间明文密文与一个对应的所述中间动态向量进行异或运算,获得N组解密后的明文;
明文处理单元,用于将所述N组解密后的明文组成最终的所述解密明文。
本申请实施例提供的解密装置能够实现图4所示方法实施例中解密方法实现的各个过程,为避免重复,这里不再赘述。
本申请实施例提供的技术方案,相对于现有计数器模式下的分组加解密方式,不再是通过计数器对初始化向量进行累加操作,获得用于参与每组明文加密的中间向量,而是先由初始化向量与一随机数进行异或运算得到初始动态向量,再通过计数器对该初始动态向量进行累加操作,获得用于参与每组明文加密的中间向量(即中间动态向量)。这样处理,首先使得该初始动态向量代替初始化向量成为关键解密元素之一,因此密文传输过程中,不再需要传输初始化向量,而是需要传输该初始动态向量,且本申请实施例可以对该初始动态向量进行分组加密,使得初始动态向量在传输过程中不可见,增大了破解难度,解决了现有计数器模式下,明文传输初始化向量的问题,提升了数据的安全性。
依据本申请实施例的一个方面,还提供了一种电子设备,包括处理器和存储器,存储器上存储有可在所述处理器上运行的程序或指令,该程序或指令被处理器执行时实现上述加密方法实施例的各个步骤,或解密方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
依据本申请实施例的另一个方面,还提供了一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述加密方法实施例的各个过程,或解密方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM、RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (13)
1.一种加密方法,其特征在于,包括:
获取一个预设数据量大小的随机数;
将所述随机数与预设初始化向量进行异或运算,获得初始动态向量;
通过计数器对所述初始动态向量进行N次累加操作,获得N个中间动态向量;
根据预设原始密钥和所述N个中间动态向量,对待加密明文进行并行分组加密,获得明文密文;
根据所述预设原始密钥和所述初始动态向量,获得经过分组加密处理的动态向量密文;
将所述明文密文与所述动态向量密文组成最终密文。
2.根据权利要求1所述的加密方法,其特征在于,在所述获取一个预设数据量大小的随机数之前,所述加密方法还包括:
根据第一预设算法,生成一个全局唯一标识符;
将所述全局唯一标识符确定为所述随机数。
3.根据权利要求1所述的加密方法,其特征在于,所述根据所述预设原始密钥和所述初始动态向量,获得经过分组加密处理的动态向量密文,包括:
根据所述预设原始密钥,对所述初始动态向量进行分组加密,获得所述动态向量密文。
4.根据权利要求1所述的加密方法,其特征在于,所述根据所述预设原始密钥和所述初始动态向量,获得经过分组加密处理的动态向量密文,包括:
根据所述预设原始密钥,对所述初始动态向量进行分组加密,获得中间向量密文;
将所述中间向量密文与所述预设初始化向量进行异或运算,获得所述动态向量密文。
5.根据权利要求1所述的加密方法,其特征在于,所述根据所述预设原始密钥和所述N个中间动态向量,对待加密明文进行并行分组加密,获得明文密文,包括:
按照每组所述预设数据量大小,将待加密明文进行分组,获得N个明文分组;
将所述N个明文分组中的每组明文与一个对应的所述中间动态向量进行异或运算,获得N组中间明文密文;
根据第二预设算法,对所述预设原始密钥进行扩展,获得M个扩展密钥;
根据所述M个扩展密钥,分别对每组所述中间明文密文进行并行分组加密,获得N组加密的明文;
将所述N组加密的明文进行拼接,组成最终的所述明文密文。
6.一种解密方法,其特征在于,用于对根据权利要求1至5任一项所述的加密方法加密的明文进行解密,所述解密方法包括:
接收目标密文;其中,所述目标密文包括:所述明文密文和所述动态向量密文;
在所述目标密文中,获取所述动态向量密文;
根据所述预设原始密钥和所述动态向量密文,获得经过分组解密处理的所述初始动态向量;
通过计数器对所述初始动态向量进行N次累加操作,获得所述N个中间动态向量;
根据所述预设原始密钥和所述N个中间动态向量,对所述目标密文中的明文密文,进行并行分组解密,获得解密明文。
7.根据权利要求6所述的解密方法,其特征在于,在所述动态向量密文是根据所述预设原始密钥对所述初始动态向量进行分组加密得到的情况下,所述根据预设原始密钥和所述动态向量密文,获得经过分组解密处理的初始动态向量,包括:
根据所述预设原始密钥,对所述动态向量密文进行分组解密,获得所述初始动态向量。
8.根据权利要求6所述的解密方法,其特征在于,在所述动态向量密文是先根据所述预设原始密钥对所述初始动态向量进行分组加密,再与预设初始化向量进行异或运算得到的情况下,所述根据预设原始密钥和所述动态向量密文,获得经过分组解密处理的初始动态向量,包括:
将所述动态向量密文与所述预设初始化向量进行异或运算,获得中间向量密文;
根据所述预设原始密钥,对所述中间向量密文进行分组解密,获得所述初始动态向量。
9.根据权利要求6所述的解密方法,其特征在于,在待加密明文是先与所述中间动态向量进行异或运算,再通过所述预设原始密钥进行分组加密得到的情况下,所述根据所述预设原始密钥和所述N个中间动态向量,对所述目标密文中的明文密文,进行并行分组解密,获得解密明文,包括:
在所述目标密文中获得N组所述预设数据量大小的明文密文;
根据第二预设算法,对所述预设原始密钥进行扩展,获得M个扩展密钥;
根据所述M个扩展密钥,分别对每组所述明文密文进行并行分组解密,获得N组中间明文密文;
将每组所述中间明文密文与一个对应的所述中间动态向量进行异或运算,获得N组解密后的明文;
将所述N组解密后的明文组成最终的所述解密明文。
10.一种加密装置,其特征在于,所述装置包括:
第一获取模块,用于获取一个预设数据量大小的随机数;
第一向量获取模块,用于将所述随机数与预设初始化向量进行异或运算,获得初始动态向量;
第二向量获取模块,用于通过计数器对所述初始动态向量进行N次累加操作,获得N个中间动态向量;
第一加密模块,用于根据预设原始密钥和所述N个中间动态向量,对待加密明文进行并行分组加密,获得明文密文;
第二加密模块,用于根据所述预设原始密钥和所述初始动态向量,获得经过分组加密处理的动态向量密文;
密文处理模块,用于将所述明文密文与所述动态向量密文组成最终密文。
11.一种加密装置,其特征在于,所述装置包括:
接收模块,用于接收目标密文;
第二获取模块,用于在所述目标密文中,获取动态向量密文;
第一解密模块,用于根据预设原始密钥和所述动态向量密文,获得经过分组解密处理的所述初始动态向量;
第三向量获取模块,用于通过计数器对所述初始动态向量进行N次累加操作,获得所述N个中间动态向量;
第二解密模块,用于根据所述预设原始密钥和所述N个中间动态向量,对所述目标密文中的明文密文,进行并行分组解密,获得解密明文。
12.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至5任一项所述的加密方法的步骤,或实现如权利要求6至9任一项所述的解密方法的步骤。
13.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1至5任一项所述的加密方法的步骤,或实现如权利要求6至9任一项所述的解密方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211085085.9A CN115567189A (zh) | 2022-09-06 | 2022-09-06 | 一种加密方法、解密方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211085085.9A CN115567189A (zh) | 2022-09-06 | 2022-09-06 | 一种加密方法、解密方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115567189A true CN115567189A (zh) | 2023-01-03 |
Family
ID=84738545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211085085.9A Pending CN115567189A (zh) | 2022-09-06 | 2022-09-06 | 一种加密方法、解密方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115567189A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116886403A (zh) * | 2023-08-04 | 2023-10-13 | 天合光能股份有限公司 | 加密方法、解密方法、通信方法及装置 |
CN118381602A (zh) * | 2024-06-24 | 2024-07-23 | 山东云海国创云计算装备产业创新中心有限公司 | 基于轻量级加密算法的数据加密方法、设备、服务器 |
CN118568753A (zh) * | 2024-07-29 | 2024-08-30 | 浙江大华技术股份有限公司 | 密文数据块的解密方法及装置、程序产品 |
CN118568753B (zh) * | 2024-07-29 | 2024-10-22 | 浙江大华技术股份有限公司 | 密文数据块的解密方法及装置、程序产品 |
-
2022
- 2022-09-06 CN CN202211085085.9A patent/CN115567189A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116886403A (zh) * | 2023-08-04 | 2023-10-13 | 天合光能股份有限公司 | 加密方法、解密方法、通信方法及装置 |
CN118381602A (zh) * | 2024-06-24 | 2024-07-23 | 山东云海国创云计算装备产业创新中心有限公司 | 基于轻量级加密算法的数据加密方法、设备、服务器 |
CN118568753A (zh) * | 2024-07-29 | 2024-08-30 | 浙江大华技术股份有限公司 | 密文数据块的解密方法及装置、程序产品 |
CN118568753B (zh) * | 2024-07-29 | 2024-10-22 | 浙江大华技术股份有限公司 | 密文数据块的解密方法及装置、程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101965628B1 (ko) | 동형 암호화를 수행하는 단말 장치와 그 암호문을 처리하는 서버 장치 및 그 방법들 | |
JP3901909B2 (ja) | 暗号化装置およびプログラムを記録した記録媒体 | |
US7110545B2 (en) | Method and apparatus for symmetric-key encryption | |
CN101202623B (zh) | 消息验证码产生方法、验证/加密和验证/解密方法 | |
CN115567189A (zh) | 一种加密方法、解密方法及装置 | |
KR20150037913A (ko) | 공유 비밀키 생성 장치, 암호화 장치, 복호화 장치, 공유 비밀키 생성 방법, 암호화 방법, 복호화 방법, 및 프로그램 | |
CN109246098A (zh) | 一种支持备份服务器同步密文比较的方法 | |
CN110999202B (zh) | 用于对数据进行高度安全、高速加密和传输的计算机实现的系统和方法 | |
US20140317407A1 (en) | Incremental mac tag generation device, method, and program, and message authentication device | |
JP2014531175A (ja) | 動的な暗号化方法 | |
CN113726725A (zh) | 一种数据加解密方法、装置、电子设备及存储介质 | |
JP6468567B2 (ja) | 鍵交換方法、鍵交換システム | |
US20230208615A1 (en) | Online-Streamer Image Model File Transmission in Co-Hosting During Livestreaming | |
CN102946315B (zh) | 一种采用分组方式构造mac码的方法及系统 | |
Neha | Enhanced security using hybrid encryption algorithm | |
JP2016075765A (ja) | 認証暗号化装置および認証復号装置、ならびに、それらのプログラム | |
CN112532384B (zh) | 基于分组密钥模式下对传输密钥快速加解密的方法 | |
CN114117406A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
US20170041133A1 (en) | Encryption method, program, and system | |
CN117318986A (zh) | 一种基于多重加密的数据传输方法及系统 | |
CN111565108A (zh) | 签名处理方法、装置及系统 | |
CN108270565A (zh) | 一种数据混合加密方法 | |
CN116248316A (zh) | 文件加密方法、文件解密方法、装置及存储介质 | |
CN115632765A (zh) | 加密方法、解密方法、装置、电子设备及存储介质 | |
CN108768923A (zh) | 一种基于量子可逆逻辑线路的加密算法的聊天实时加密方法 |
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 |