CN110995411B - 加密、解密方法、装置、电子设备及存储介质 - Google Patents
加密、解密方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110995411B CN110995411B CN201911108467.7A CN201911108467A CN110995411B CN 110995411 B CN110995411 B CN 110995411B CN 201911108467 A CN201911108467 A CN 201911108467A CN 110995411 B CN110995411 B CN 110995411B
- Authority
- CN
- China
- Prior art keywords
- random number
- stream
- processing
- plaintext
- key
- 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.)
- Active
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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network 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
- H04L63/0457—Network 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 wherein the sending and receiving network entities apply dynamic encryption, e.g. stream encryption
-
- 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)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例中,提供一种加密、解密方法、装置电子设备及存储介质。其中,所述加密方法为:利用初始化向量(IV)、第一初始密码(KEY)以及密码本生成初始随机数;根据所述初始随机数,生成动态更新的随机数序列;对明文中的数据进行乱序处理,得到乱序处理后的明文流;基于所述乱序处理后的明文流,按照预设规则,从所述动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及密码本得到密钥流;将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文。如此,能够实现非顺序加密以及动态的密钥加密,从而降低明文被暴力破解的概率。
Description
技术领域
本发明涉及网络安全领域,尤其涉及一种加密、解密方法、装置电子设备及存储介质。
背景技术
随着数据在网络传输过程中安全性的重要程度的日益增强,对数据加密方法及数据解密方法提出了更高的要求。相关技术中,一般采用传统的对称加密算法如,数据加密标准(DES,Data Encryption Standard)、三重数据加密算法(3DES,Triple Data EncryptionAlgorithm)和高级加密标准(AES,Advanced Encryption Standard)对数据进行加密。其中,AES对称加密算法的基本思想为:将明文中的数据按顺序进行固定长度的分组,并对每一组数据均采用相同的密钥进行多轮加密操作,得到每一组数据相应的密文,将所有组数据的密文合并成最终的密文。基于此,传统的对称加密算法存在按照明文的固有顺序进行加密以及用于加密的密钥固定的问题,这些问题增加了明文被暴力破解的概率。
发明内容
为解决相关技术中存在的问题,本发明实施例提供一种加密、解密方法、装置电子设备及存储介质能够实现非顺序加密以及动态的密钥加密,从而降低明文被暴力破解的概率。
为达到上述目的,本发明实施例的技术方案是这样实现的:
本发明实施例提供一种加密方法,包括:
利用初始化向量(IV,Initialization Vector)、第一初始密码(KEY)以及密码本生成初始随机数;
根据所述初始随机数,生成动态更新的随机数序列;
对明文中的数据进行乱序处理,得到乱序处理后的明文流;
基于所述乱序处理后的明文流,按照预设规则,从所述动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及密码本得到密钥流;
将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文。
上述方案中,所述根据所述初始随机数,生成动态更新的随机数序列,包括:
根据所述初始随机数,结合线性反馈寄存器(LFSR,Linear Feedback ShiftRegister),生成动态更新的随机数序列。
上述方案中,所述方法还包括:
对明文中的数据进行流化处理,取出中间参数;
基于所述中间参数以及密码本得到所述中间参数对应的密文;
将所述中间参数与所述中间参数对应的密文进行异或处理,得到所述KEY。
上述方案中,所述方法还包括:
获取多个第二初始密码;
基于所述多个第二初始密码,结合CR4加密算法,生成对应的多个密码本;
所述利用IV、KEY以及密码本生成初始随机数时,所述方法包括:
利用IV、KEY以及所述多个密码本中的第一密码本生成初始随机数;
所述根据所述取得的对应的随机数以及密码本得到密钥流时,所述方法包括:
根据所述取得的对应的随机数以及所述多个密码本中的第二密码本得到密钥流。
上述方案中,所述对明文中的数据进行乱序处理,得到乱序处理后的明文流,包括:
对明文中的数据进行流化处理,得到所述明文对应的一维数组;
对所述明文对应的一维数组进行换位处理,得到换位后的一维数组;
将换位后的一维数组中的每一个数补齐到预设长度;
针对补齐到预设长度后的每一个数,进行分组处理、交换处理以及混淆处理,得到相应数对应的处理后的数;补齐到预设长度后的所有数对应的处理后的数构成了乱序处理后的明文流。
上述方案中,所述将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文,包括:
将所述乱序处理后的明文流与所述密钥流进行异或处理,得到原始密文流;
在所述原始密文流前面增加预设长度的密文头,得到密文。
本发明实施例还提供一种解密方法,包括:
利用IV、KEY以及密码本生成初始随机数;
根据所述初始随机数,生成动态更新的随机数序列;
根据密文、所述密码本以及所述动态更新的随机数序列,得到密钥流;
将所述密文中的数据与密钥流进行异或处理,得到乱序处理后的明文流;
将所述乱序处理后的明文流进行乱序还原处理,得到明文。
本发明实施例还提供一种加密装置,包括:
第一生成单元,用于利用IV、KEY以及密码本生成初始随机数;
第二生成单元,用于根据所述初始随机数,生成动态更新的随机数序列;
乱序处理单元,用于对明文中的数据进行乱序处理,得到乱序处理后的明文流;
密钥流生成单元,用于基于所述乱序处理后的明文流,按照预设规则,从所述动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及密码本得到密钥流;
加密单元,用于将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文。
本发明实施例还提供一种解密装置,包括:
第一生成单元,用于利用IV、KEY以及密码本生成初始随机数;
第二生成单元,用于根据所述初始随机数,生成动态更新的随机数序列;
密钥流生成单元,根据密文、所述密码本以及所述动态更新的随机数序列,得到密钥流;
解密单元,用于将所述密文中的数据与密钥流进行异或处理,得到乱序处理后的明文流;
乱序还原单元,用于将所述乱序处理后的明文流进行乱序还原处理,得到明文。
本发明实施例又提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的加密方法、或实现本发明实施例提供的解密方法。
本发明实施例又提供一种存储介质,所述存储介质存储有可执行指令,当所述可执行指令被至少一个处理器执行时,实现本发明实施例提供的加密方法、或实现本发明实施例提供的解密方法。
本发明实施例提供了一种加密、解密方法、装置电子设备及存储介质。其中,所述加密方法为:利用IV、KEY以及密码本生成初始随机数;根据所述初始随机数,生成动态更新的随机数序列;对明文中的数据进行乱序处理,得到乱序处理后的明文流;基于所述乱序处理后的明文流,按照预设规则,从所述动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及密码本得到密钥流;将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文。本发明实施中,通过对明文的乱序处理,实现了非顺序加密;同时利用两个固定私钥的生成了多个动态的密钥,并利用动态的密钥进行加密,如此,降低了明文被暴力破解的概率。
附图说明
图1为本发明实施例提供的加密方法的实现流程示意图一;
图2为本发明实施例提供的加密方法的实现流程示意图二;
图3为本发明实施例提供的解密方法的实现流程示意图一;
图4为本发明实施例提供的解密方法的实现流程示意图二;
图5为本发明实施例提供的加密装置的组成结构示意图;
图6为本发明实施例提供的解密装置的组成结构示意图;
图7为本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
首先对本发明实施例中的一些概念进行解释。
明文:泛指密码学中没有经过加密的数据。
明文流:指明文以序列的方式进行表示。
密钥:泛指密码学中用来加密明文的密码。
密钥流:指密钥以序列的方式进行表示。
密文:泛指密码学中利用密钥将明文经过加密后的数据。
密文流:指密文以序列的方式进行表示。
密码本:用于混淆密钥与密文之间的关系。
相关技术中,AES为分组加密算法,即将明文中的数据分成长度相同的组,每次加密一组数据,直到加密全部明文。在AES标准规范中,分组长度只能是128位(bit),也就是说,每个分组为16个字节(Byte)。这里,每1个字节包括8位,即128位/8位=16字节。密钥的长度可以使用128位、192位或256位。根据密钥长度的不同,AES可以分为AES128、AES192、AES256,其中,AES256为支付卡行业安全标准委员会(PCI)官方指定的敏感信息加密算法。相关技术中AES256对明文中每一组数据的加密过程需要经历以下几个步骤:
步骤a:从密钥中导出一组轮询键;
步骤b:将明文中的数据按顺序进行128位的分组,分组后的每一组数据的初始状态称为起始状态数组;
步骤c:对于每一组的数据,将初始轮转密钥添加到起始状态数组;
步骤d:根据轮询键,对起始状态数组进行十三轮状态数组加密操作;其中,每一轮状态数组加密操作均包括:字节替换、行位移、列混淆、轮密钥加;
步骤e:执行最后一轮状态数组加密操作,得到最终状态数组即对应组数据的密文;其中,最后一轮状态数组加密操作均包括:字节替换、行位移、轮密钥加;
步骤f、得到明文中对应组的数据对应的密文,明文中所有组的数据对应的密文形成最终的密文。
基于上述加密过程,相关技术中的AES256加密过程主要存在以下几个问题:
1、顺序加密
相关技术中的AES256加密过程对明文的分组是按明文中数据出现的固有顺序进行分组的,并且对于每一组数据的加密处理也是按顺序进行的。基于此,增加了通过词频、装库等方式破解的概率。
2、密钥固定
相关技术中的AES256加密过程中对明文中每一组数据的加密密钥都是相同的,而通用的计算机可识别的字符集可穷尽。基于此,通过大量的重试可以反推出加密算法和密钥。
3、单一密钥
相关技术中的AES256加密过程中,对于相同明文,每次加密生成的密文永远一致。基于此,增加了暴力破解的概率。
4、速度慢
相关技术中的AES256加密过程中对明文中每一组数据的加密均执行多轮重复的加密过程,增加了递归层级,降低了加密速度。
5、密码本单一
单一密码本,增加了暴力破解概率。
6、非定长
相关技术中的AES256加密过程中,对明文的分组长度只能是128位(bit),即各分组的块大小一致且固定。也就是说,当明文的总长度不是128位的整数倍时,需要对最后一组分组数据以补位的方式补齐至128位,此时生成的密文长度与明文长度会出现不相等的情况。基于此,增加了需传输的信息,耗费流量。
7、通用性差
相关技术中的AES256加密过程中,对明文的分组长度只能是128位(bit),不具备自动伸缩能力,且大文本加密无法装载。
基于此,本发明实施例利用IV、KEY以及密码本生成初始随机数;根据所述初始随机数,生成动态更新的随机数序列;对明文中的数据进行乱序处理,得到乱序处理后的明文流;基于所述乱序处理后的明文流,按照预设规则,从所述动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及密码本得到密钥流;将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文。本发明实施中,通过对明文的乱序处理,实现了非顺序加密;同时利用两个固定私钥的生成了多个动态的密钥,并利用动态的密钥进行加密,如此,降低了明文被暴力破解的概率。
本发明实施例提供一种加密方法,图1为本发明实施例加密方法的实现流程示意图。如图1所示,所述方法包括以下步骤:
步骤101:利用IV、KEY以及密码本生成初始随机数;
所述IV和所述KEY可以理解为两个固定的私钥,实际应用中,IV和KEY可以为随机数或者伪随机数。
所述密码本于混淆密钥与密文之间的关系。实际应用中,密码本可以直接采用已经生成的密码本,也可以根据一定的算法自行生成密码本。
需要说明的是,这里初始化向量IV、第一初始密码KEY以及密码本对于发送明文及接收密文的双方即加、解密双方是共享的。
实际应用时,利用初始化向量IV、第一初始密码KEY以及密码本生成初始随机数的方式可以是基于所述IV和KEY及指定的密码本,结合初始化算法,生成初始随机数。
这里,所述初始化算法不固定,只要是可逆的算法即可。
在一些实施例中,所述初始化算法具体可以是:
首先对IV和KEY进行流化;然后对流化后的数据中的每个数依次从高到低以8位划分为一组,分为四组,并依次从高到低对IV和KEY中对应组数据进行或(|)运算,得到或运算后的数;再对进行或运算后的数依次从高到底8位划分一组,并将每组数据转为十进制数后进行相加,得到处理后每个数;最后根据处理后每个数从密码本中获取对应的密文,这些对应的密文即为初始随机数。这里,流化后的数据是整数(Integer)类型的一维数组,并且一维数组中的每个数为32位。
步骤102:根据所述初始随机数,生成动态更新的随机数序列;
在一些实施例中,所述根据所述初始随机数,生成动态更新的随机数序列,包括:根据所述初始随机数,结合线性反馈寄存器LFSR,生成动态更新的随机数序列。
具体实施时,可以利用IV和KEY以及指定的密码本生成初始随机数作为赋给LFSR的初始值即LFSR的种子,再利用LFSR的种子进行更新运算得到动态更新的随机数序列。这里,LFSR包括处理单元位置以及处理单元位置对应的随机数。
实际应用时,根据所述初始随机数,生成动态更新的随机数序列的方式可以是基于所述LFSR的初始值,利用更新算法,得到LFSR的动态更新值。
这里,所述更新算法不固定,只要是可逆的且可以实现LFSR的值更新的算法即可。
在一些实施例中,所述更新算法具体可以是:
例如,LFSR的初始值为17个32位的数,这些初始值从左到右排列,依次为R[0]、R[1]、R[2]、......、R[16]。更新算法具体可以为:将所有数向左移动一位,即R[0]=R[1];R[1]=R[2];......;R[15]=R[16];R[16]=new;其中,new表示新生成的数,new=R[15]^R[4]^(R[0]<<8)^Multab[R[0]>>24];其中,Multab表示一个取数算法,具体为将LFSR指定位置的数取出后右移24位即取高8位数然后与255进行与(&)运算;^表示异或运算;R[0]<<8表示将R[0]左移动8位。按照上述更新算法可以实现LFSR持续的动态更新。如此,重复执行上述更新算法,可以生成动态更新的随机数。这里,R[0]、R[1]、R[2]、......中的0、1、2、......即指的是LFSR的处理单元位置,R[0]、R[1]、R[2]、......即指的是LFSR的处理单元位置对应的随机数。
需要说明的是,这里关于LFSR的初始化算法以及更新算法对于加、解密双方是共享的。
步骤103:对明文中的数据进行乱序处理,得到乱序处理后的明文流;
对明文进行乱序处理可以理解为对明文进行预处理,包括对明文中各数之间进行乱序处理,以及对各数内部分组之间进行乱序处理。具体实施时,可以是将明文中的数据进行流化后,对流化后的明文进行换位处理,产生一个新次序的序列数,根据新次序的序列数将对应位置的明文进行分组、交换、混淆等处理。由于对流化的明文进行了换位处理,产生了新次序的序列数,之后再基于新次序的序列数进行后续处理,因此得到的处理后的明文流相较于原明文是打乱次序的明文流。
需要说明的是,这里关于明文的初始化方法对于加、解密的双方是共享的。
步骤104:基于所述乱序处理后的明文流,按照预设规则,从所述动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及密码本得到密钥流;
所述预设规则为根据乱序处理后的明文流中每一个数的某一特征,从所述动态更新的随机数序列中取得对应的随机数的规则,该规则不作具体限定。
实际应用时,当利用LFSR生成动态更新的随机数序列时,所述预设规则可以是根据乱序处理后的明文流中每一个数的值作为LFSR中处理单元位置值,分别从LFSR的对应位置取得随机数;所述预设规则可以是根据乱序处理后的明文流中每一个数的次序作为LFSR中处理单元位置值,分别从LFSR的对应位置取得随机数。
实际应用时,根据所述取得的对应的随机数以及密码本得到密钥流的方式可以是根据所述取得的对应的随机数,查阅密码本得到所述取得的对应的随机数的置换值,将置换值作为密文流。这里,密文流中的密文与所述乱序处理后的明文流对应。
步骤105:将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文。
实际应用中,将明文流中每一个数与密钥流中对应的密钥进行异或处理,得到明文流中每一数对应的密文,所有的密文形成了原始密文流。
本发明实施例中,利用IV、KEY以及密码本生成初始随机数;根据所述初始随机数,生成动态更新的随机数序列;对明文中的数据进行乱序处理,得到乱序处理后的明文流;基于所述乱序处理后的明文流,按照预设规则,从所述动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及密码本得到密钥流;将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文。本发明实施中,通过对明文的乱序处理,实现了非顺序加密;同时利用两个固定私钥的生成了多个动态的密钥,并利用动态的密钥进行加密,如此,降低了明文被暴力破解的概率。
下面结合附图及具体实施例对本发明加密方法作进一步详细的说明。
图2为本发明实施例提供的一种加密方法的实现示意图,如图2所示,所述方法包括以下步骤:
步骤201:获取至少一个第二初始密码;基于所述第二初始密码,结合CR4加密算法,生成至少一个密码本;
这里,所述第二初始密码可以理解为一个固定的私钥,用于生成密码本。实际应用时,所述第二初始密码可以为随机数或者伪随机数,如256位的随机数。
实际应用中,第二初始密码的获取方式可以是从相应的配置文件中读取。其中相应文件中的第二初始密码可以由相关人员指定,也可以是通过随机数产生器或者伪随机数产生器产生。
需要说明的是,基于一个第二初始密码生成一个密码本;基于多个第二初始密码则生成多个对应各第二初始密码的密码本,即第二初始密码与密码本具有对应关系。
实际应用时,密码本主要用于后续对从线性反馈位移寄存器(LFSR,LinearFeedback Shift Register)中读取的值进行加密,以生成密钥流。利用多个密码本进行加密可以使得密码本的规则被破解的概率降低,但过多的密码本会存在管理和切换过程实现复杂的问题。基于此,可以根据实际需求选择第二初始密码的个数。
实际应用时,可以获取1-3个第二初始密码,结合RC4加密算法,生成1-3组不同进制的密码本。如,利用3个256位的第二初始密码,生成1组8进制,2组32进制的256位密码本。这里,RC4加密算法是一个开源技术,该技术优化了随机数生成密码本的质量。
当确定需要生成多个密码本时,在一些实施例中,所述方法还包括:
获取多个第二初始密码;
基于所述多个第二初始密码,结合CR4加密算法,生成对应的多个密码本;
所述利用IV、KEY以及密码本生成初始随机数时,所述方法包括:
利用IV、KEY以及所述多个密码本中的第一密码本生成初始随机数;
所述根据所述取得的对应的随机数以及密码本得到密钥流时,所述方法包括:
根据所述取得的对应的随机数以及所述多个密码本中的第二密码本得到密钥流。
实际应用时,当生成了多个密码本时,可以预先规定好所述生成的多个密码本中的每一个密码本具体在何时加密时使用。如上述方法中所述的,指定第一密码本在生成初始随机数时使用;指定第二密码本在生成密钥流时使用。这里的第一密码本和第二密码本均是生成的多个密码本中的一个。
需要说明的是,这里关于至少一个第二初始密码以及生成密码本的方法对于发送明文及接收密文的双方即加、解密双方是共享的。
步骤202:获取IV和KEY;
这里,IV和KEY可以理解为两个固定的私钥,实际应用中,可以为随机数或者伪随机数。IV和KEY用于与指定的密码本一起生成初始随机数,以填充到LFSR中,作为赋给LFSR的初始值即LFSR事先选定的种子。
需要说明的是,实际应用时,所述第二初始密码与KEY可以相同也可以不同。
实际应用时,获取IV和KEY的方式可以是从相应文件的配置中获取。如,在对应环境的profile下增设qsc.properties文件,并配置IV和KEY。相应文件中配置的IV和KEY可以按照预设的规则生成或者通过随机数产生器或者伪随机数产生器直接产生。
需要说明的是,无论采用哪种方式配置IV和KEY,最终获取的IV和KEY在发送明文方和接收密文的方之间是共享的。
下面给出一种按照预设的规则生成KEY的方式的实例。
实际应用时,当IV和KEY确定时,LFSR装入的初始值即种子也就固定了,LFSR虽然产生了动态变化的随机数序列,但当LFSR所采用的更新算法固定,根据固定的种子及固定的算法得到的随机数序列也是固定的。也就是说,当采用相同的IV和KEY,LFSR中产生的动态变化的随机数序列也是固定的。基于此,种子的选择决定了输出的随机数序列。
在一实施例中,还可以根据明文的不同,生成动态的KEY。如此,利用动态的KEY,能够在LFSR中产生不同的动态的随机数序列,而利用不同的动态的随机数序列进行后续的加密处理,可以进一步提升加密的安全级别。
根据明文的不同,生成动态的KEY的具体方法如下:
步骤2021:对明文中的数据进行流化处理,取出中间参数;
所述中间参数可以是流化后的明文中各数的众数,也可以是流化后的明文中各数的中位数。
这里,众数为流化后的明文中、出现次数最多的一个数。实际应用时,利用Java实现取众数,是将明文中字符转化为对应的ASCII码,并从ASCII码中得到出现次数最多的数,该数即为众数。这里,根据国际标准ASCII码表中的最大值为127,不会超出密码本的长度。举个例子来说,明文为:abcaba,流化后的明文为:97 98 99 97 98 97,那么则众数为97。
这里,中位数是指流化后的明文中各数的平均值。需要说明的是,当流化后的明文中各数的平均值为非整数时,取该平均值的整数部分。
步骤2022:基于所述中间参数以及密码本得到所述中间参数对应的密文;
这里,实际应用时,当生成密码本为一个时,所述密码本为生成的这一个密码本;当所述生成密码本为多个时,所述密码本为所述生成的多个密码本的某一个。实际应用中,可以根据预先规定选择所述生的多个密码本中某一个密码本。
实际应用时,根据中间参数,利用指定密码本得到该中间参数对应的密文的方式可以是根据中间参数的值,查阅密码本得到该中间参数的置换值,将该置换值作为该中间参数对应的密文。
步骤2023:将所述中间参数与所述中间参数对应的密文进行异或处理,得到所述KEY。
这里,利用明文承载的相关信息产生了KEY,基于明文的不同,KEY也会发生变化。
需要说明的是:当KEY通过随机数产生器或者伪随机数产生器直接产生时,步骤201和步骤202之间无明确的先后顺序;当KEY通过按照预设的规则产生时,步骤201需要在步骤202之前执行。
步骤203:利用所述IV和所述KEY以及密码本生成初始随机数;
实际应用时,当采用动态的密钥对明文进行加密时,可以利用LFSR产生动态更新的随机数序列以生成动态的密钥。
具体实施时,可以利用IV和KEY以及指定的密码本生成初始随机数作为赋给LFSR的初始值即LFSR的种子,再利用LFSR的种子进行更新运算得到动态更新的随机数序列。这里,LFSR包括处理单元位置以及处理单元位置对应的随机数。
在一些实施例中,LFSR适用于任何有限域,最大长度周期为17,即LFSR可存储17个32位的数。
这里,利用IV和KEY以及指定的密码本构造LFSR具体可以是基于所述IV和KEY及指定的密码本,结合初始化算法,得到LFSR的初始值;
这里,所述初始化算法不固定,只要是可逆的算法即可。
在一些实施例中,所述初始化算法具体可以是:
首先对IV和KEY进行流化;然后对流化后的数据中的每个数依次从高到低以8位划分为一组,分为四组,并依次从高到低对IV和KEY中对应组数据进行或(|)运算,得到或运算后的数;再对进行或运算后的数依次从高到底8位划分一组,并将每组数据转为十进制数后进行相加,得到处理后每个数;最后根据处理后每个数从指定密码本中获取对应的密文,这些对应的密文即为LFSR的初始值。这里,流化后的数据是整数(Integer)类型的一维数组,并且一维数组中的每个数为32位。这里,所述指定密码本是指当生成密码本为一个时,所述指定密码本为该生成的这一个密码本;当所述生成密码本为多个时,所述指定密码本为所述生成的多个密码本的某一个。实际应用中,可以根据预先规定选择所述生的多个密码本中某一个密码本。
步骤204:根据所述初始随机数,生成动态更新的随机数序列;
实际应用时,当采用LFSR产生动态更新的随机数序列以生成动态的密钥时,所述根据所述初始随机数,生成动态更新的随机数序列具体可以是基于所述LFSR的初始值,利用更新算法,得到LFSR的动态更新值;
这里,所述更新算法不固定,只要是可逆的且可以实现LFSR的值更新的算法即可。
在一些实施例中,所述更新算法具体可以是:
例如,LFSR的初始值为17个32位的数,这些初始值从左到右排列,依次为R[0]、R[1]、R[2]、......、R[16]。更新算法具体可以为:将所有数向左移动一位,即R[0]=R[1];R[1]=R[2];......;R[15]=R[16];R[16]=new;其中,new表示新生成的数,new=R[15]^R[4]^(R[0]<<8)^Multab[R[0]>>24];其中,Multab表示一个取数算法,具体为将LFSR指定位置的数取出后右移24位即取高8位数然后与255进行与(&)运算;^表示异或运算;R[0]<<8表示将R[0]左移动8位。按照上述更新算法可以实现LFSR持续的动态更新。如此,重复执行上述更新算法,可以生成动态更新的随机数。这里,R[0]、R[1]、R[2]、......中的0、1、2、......即指的是LFSR的处理单元位置,R[0]、R[1]、R[2]、......即指的是LFSR的处理单元位置对应的随机数。
需要说明的是,这里关于LFSR的初始化算法以及更新算法对于加、解密双方是共享的。
步骤205:对明文中的数据进行乱序处理,得到乱序处理后的明文流;
对明文进行乱序处理可以理解为对明文进行预处理,包括对明文中各数之间进行乱序处理,也包括对各数内部分组之间进行乱序处理。具体实施时,可以是将明文中的数据进行流化后,对流化后的明文进行换位处理,产生一个新次序的序列数,根据新次序的序列数将对应位置的明文进行分组、交换、混淆等处理。由于对流化的明文进行了换位处理,产生了新次序的序列数,之后再基于新次序的序列数进行后续处理,因此得到的处理后的明文流相较于原明文是打乱次序的明文流。
实际应用中,在一些实施中对明文中的数据进行乱序处理的具体实现步骤如下:
步骤2051:对明文中的数据进行流化处理,得到所述明文对应的一维数组;
实际应用时,可以先将abcabca转换成一维的字符,然后再查找各字符对应的ASCII码。
举个例子来说,明文为:abcaba,流化处理后的一维数组为:97 98 99 97 9897。
步骤2052:对所述明文对应的一维数组进行换位处理,得到换位后的一维数组;
实际应用时,可以按照换位算法对所述一维数组进行换位,得到换位后的一维数组;所述换位算法不固定,只要是可逆的且可以实现一维数组间的数据次序打乱的算法即可。
在一些实施例中,所述换位算法具体可以是:将明文对应的一维数组按8个数为一组进行分组,并将奇数组与偶数组的位置进行交换。如,第1组与第2组交换位置,第3组和第4组交换位置等等,以此类推,一维数组最后不能被分组交换的数据不执行交换操作。
步骤2053:将换位后的一维数组中的每一个数补齐到预设长度;
实际应用时,这里的预设长度可以为32位,即将换位后的一维数组中的每一个数转换成2进制数,并补齐为32位数,当不足32位可以从左到右补充0。
步骤2054:针对补齐到预设长度后的每一个数,进行分组处理、交换处理以及混淆处理,得到相应数对应的处理后的数;补齐到预设长度后的所有数对应的处理后的数构成了乱序处理后的明文流。
实际应用时,每一个32位数进行分组处理可以是以8位为一组,共分为4组。
实际应用时,每一个32位数进行交换处理可以是向右移动一位,如假设分组后的4组32位数为00000000 00000001 00000010 00000100,则交换处理后4组的32位数为00000100 00000000 00000001 00000010。
实际应用时,每一个32位数进行混淆处理可以是通过矩阵相乘来实现的,经交换处理后的数组与固定的数组相乘,得到混淆后的数组。这里,在完成上述处理后得到的仍然为一个32位数,补齐到预设长度后的所有数对应的所有处理后的32位数即为处理后打乱次序的明文流。
对明文进行乱序处理可以实现非顺序加密,并且降低明文与密文的线性相关性。
步骤206:基于所述乱序处理后的明文流,按照预设规则,从所述动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及密码本得到密钥流;
所述预设规则为根据乱序处理后的明文流中每一个数的某一特征,从所述动态更新的随机数序列中取得对应的随机数的规则,该规则不作具体限定。
实际应用时,当利用LFSR生成动态更新的随机数序列时,所述预设规则可以是根据乱序处理后的明文流中每一个数的值作为LFSR中处理单元位置值,分别从LFSR的对应位置取得随机数;所述预设规则可以是根据乱序处理后的明文流中每一个数的次序作为LFSR中处理单元位置值,分别从LFSR的对应位置取得随机数。
在一实施例中,得到密钥流的具体步骤可以包括:
步骤2061:针对所述乱序处理后的明文流中的每一个数,得到对应的密钥;
首先,将明文流中的每一个数,即32位数包含的4组数分别进行10进制数转换;然后,利用所述4组10进制数作为LFSR中处理单元位置值,分别从LFSR中取得4个对应的随机数;再将4个随机数进行固定更新运算得到4个更新后的随机数;最后根据4个更新后的随机数从指定密码本中获取对应的4个密文,这4个密文进行异或即为明文流中的相应32位数对应的密钥。这里,固定更新运算的方法可以与前述的交换处理方法及混淆处理方法相同。这里,所述指定密码本是指当生成密码本为一个时,所述指定密码本为生成的这一个密码本;当所述生成密码本为多个时,所述指定密码本为所述生成的多个密码本的某一个。实际应用中,可以根据预先规定选择所述生的多个密码本中某一个密码本。
步骤2062:重复上述步骤2061的方法,依次得到明文流中所有数对应的密钥,即密钥流。
需要说明的是,这里关于基于所述明文流,从LFSR中取得对应的随机数的预设规则以及固定更新运算,对于加、解密的双方是共享的。
步骤207:将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文;
实际应用中,将明文流中每一个数与密钥流中对应的密钥进行异或处理,得到明文流中每一数对应的密文,所有的密文形成了密文流。
这里,得到的密文流的长度与明文流的长度相等。并且由于本申请实施例中是对明文流中每一个数为单位进行加密,因此不会存在相关技术中,当明文流的总长度不是分组长度的整数倍时,出现的密文流长度与明文流长度不相等的情况。也就是说,本申请实施例的方案处理单位是一个数(或者一个字符),可天然适用于bit级别的数据流加密、TCP层信道加密、TB级文本加密,且不会增加额外的传输成本。
需要说明的是,这里加密处理的方式对于加、解密的双方是共享的。
实际应用中,为了获得更高安全等级的密文还可以在密文流前增加密文头,得到与明文流的长度不相等的最终密文。
基于此,在一些实施例中,所述将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文,包括:
将所述乱序处理后的明文流与所述密钥流进行异或处理,得到原始密文流;
在所述原始密文流前面增加预设长度的密文头,得到密文。
这里,可以按照预设规则产生出至少一个数,并将该数以预设长度的形式放在原始密文流前作为密文头。
实际应用时,可以将明文中的数据进行流化处理后取出的众数或中位数以4byte的形式放到原始密文流前面作为密文头。
需要说明的是,如果按照预设规则产生的数达不到预设长度时,可以从左至右补充0,直到达到预设长度。
需要说明的是,这里预设长度对于加、解密的双方是共享的。
本发明实施例中,首先利用获取的多个第二初始密码,生成了多个密码本,并指定了密码本的使用规则;然后利用获取的IV和KEY以及指定的密码本生成初始随机数;根据所述初始随机数,生成动态更新的随机数序列;再对明文中的数据进行乱序处理,得到乱序处理后的明文流;基于所述乱序处理后的明文流,按照预设规则,从动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及指定密码本,得到密钥流;将所述乱序处理后的明文流与所述密钥流进行异或处理,得到原始密文流;在原始密文流前面增加密文头,得到最终的密文流即最终的密文。本发明实施中,通过对明文的乱序处理,实现了非顺序加密;同时利用两个固定私钥的生成了多个动态的密钥,并利用动态的密钥进行加密,如此,降低了明文被暴力破解的概率。
另一方面,本发明实施例通过先对明文以及密钥分别进行预处理,并且在预处理后仅进行一轮的加密处理即得到密文,如此,提高了加密的速度。同时本发明实施例中采用了多个密码本进行加密,进一步降低了明文被暴力破解的概率。
本发明实施例提供一种解密方法,这里的解密方法与本申请实施例中加密过程互为逆过程。图3为本发明实施例解密方法的实现流程示意图。如图3所示,所述方法包括以下步骤:
步骤301:利用IV、KEY以及密码本生成初始随机数;
步骤302:根据所述初始随机数,生成动态更新的随机数序列;
步骤301和302为解密方生成动态更新的随机数序列的过程。实际应用时,步骤301和302与前述步骤101和102生成初始随机数和动态更新的随机数序列的方式相同,这里不作赘述。
步骤303:根据密文、所述密码本以及所述动态更新的随机数序列,得到密钥流;
这里,步骤303为步骤104的相对过程。这里,将密文以序列的方式进行表示,即为密文流。
实际应用时,利用密文流、密码本以及动态更新的随机数序列,得到密钥流的具体步骤可以包括:
步骤3031:针对所述密文流中的每一个数,得到对应的密钥;
将密文流中的每一个数,从指定密码本中获取到置换前的数,利用置换前的数以及动态更新的随机数序列得到对应的密钥。
步骤3032:重复上述步骤3031的方法,依次得到密文流中所有数对应的密钥,即密钥流。
步骤304:将所述密文中的数据与密钥流进行异或处理,得到乱序处理后的明文流;
这里,步骤304为步骤105的逆过程。将密文以序列的方式进行表示,即为密文流。
实际应用时,将密文流中每一个数与密钥流中对应的密钥进行异或处理,得到密文流中每一数对应的乱序处理后的每一个明文,乱序处理后的所有明文形成了乱序处理后的明文流。
步骤305:将所述乱序处理后的明文流进行乱序还原处理,得到明文。
这里,步骤305为步骤103的逆过程。
乱序处理后明文流进行乱序还原处理可以理解为对乱序处理后明文流进行步骤103中乱序处理的逆过程处理,包括对乱序处理后明文流中各数内部分组之间进行乱序还原处理以及对乱序处理后明文流中各数之间进行乱序还原处理。这里,在进行乱序还原处理后即得到了明文。
本发明实施例中,利用IV、KEY以及密码本生成初始随机数;根据所述初始随机数,生成动态更新的随机数序列;根据密文、所述密码本以及所述动态更新的随机数序列,得到密钥流;将所述密文中的数据与密钥流进行异或处理,得到乱序处理后的明文流;将所述乱序处理后明文流进行乱序还原处理,得到明文,从而实现了解密过程。
下面结合附图及具体实施例对本发明解密方法作进一步详细的说明。
图4为本发明实施例提供的一种解密方法的实现示意图,如图4所示,所述方法包括以下步骤:
步骤401:获取IV、KEY以及至少一个第二初始密码;
步骤402:基于所述至少一个第二初始密码,结合CR4加密算法,生成至少一个密码本;
步骤403:利用IV和KEY以及指定的密码本生成初始随机数;根据所述初始随机数,生成动态更新的随机数序列;
这里获取IV和KEY以及至少一个第二初始密码的方式均是接收由发送明文的一方发送的至少一个第二初始密码以及IV和KEY。同时,生成密码本的方法以、生成初始随机数以及更新算法对于加、解密的双方是共享的。因此,解密方同样可以按照前述步骤201~204中具体生成密码本以及得到动态更新的随机数序列的方式生成至少一个密码本以及动态更新的随机数序列。并列对于解密方而言,所述至少一个密码本的使用规则以及动态更新的随机数序列的取数规则也是已知的。在获得了至少一个密码本以及动态更新的随机数序列后,开始具体的解密步骤。
步骤404:去掉密文的密文头,得到原始密文流;
实际应用时,当密文进行了增加密文头处理时,需要将去掉位于密文前面预设长度的密文头,如4byte的密文头,得到原始密文流。
步骤405:根据原始密文流、所述密码本以及所述动态更新的随机数序列,得到密钥流;
这里,步骤405为前述步骤206的相对过程。
实际应用时,利用原始密文流、密码本以及动态更新的随机数序列,得到密钥流的具体步骤可以包括:
步骤4051:针对所述原始密文流中的每一个数,得到对应的密钥;
将所述原始密文流中的每一个数,从指定密码本中获取到置换前的数,利用置换前的数以及动态更新的随机数序列得到对应的密钥。
步骤4052:重复上述步骤4051的方法,依次得到密文流中所有数对应的密钥,即密钥流。
步骤406:将所述原始密文流与密钥流进行异或处理,得到乱序处理后的明文流;
这里步骤406为步骤207的逆过程。
实际应用时,将密文流中每一个数与密钥流中对应的密钥进行异或处理,得到密文流中每一数对应的乱序处理后的每一个明文,乱序处理后的所有明文形成了乱序处理后的明文流。
步骤407:将所述乱序处理后的明文流进行乱序还原处理,得到明文。
这里步骤407为步骤205的逆过程。
实际应用时,将乱序处理后明文流进行乱序处理的还原处理,得到明文具体步骤可以包括:
步骤4071:对乱序处理后的明文流中每一个预设位数,进行分组处理、逆交换处理、逆混淆处理,得到处理后的每一个数;
实际应用时,这里的预设位数可以为32位,每一个32位数进行分组处理可以是以8位为一组,共分为4组。这里的逆交换处理为步骤2054中交换处理的逆向过程。这里的逆混淆处理为步骤2054中混淆处理的逆向过程。
步骤4072:将处理后的每一个数去掉补充位;
实际应用时,当预设位数可以为32位时,处理后的每一个数为32位的2进制数,将该32位数可以从左到右去掉补充的0,直到出现第一个1。
步骤4073:对去掉补充位后的所有数进行换位还原,得到换位前的一维数组;
实际应用时,可以按照步骤2052中换位算法的逆过程对所述一维数组进行换位还原,得到换位前的一维数组;
步骤4074:对换位前的一维数组进行流化逆处理,得到明文;
实际应用时,可以先查找ASCII码,得到一维数组中各数对应的字符,然后将字符合并即得到明文。
本发明实施例中,将最终的密文流去掉密文头,得到原始密文流;根据所述原始密文流与对应的密码本,得到密钥流;将原始密文流与密钥流进行异或处理,得到乱序处理后的明文流;将乱序处理后明文流进行乱序还原处理,得到明文,从而实现了解密过程。
为了实现本发明实施例的方法,本发明实施例还提供一种加密装置。图5为提供的加密装置的组成结构示意图,如图5所示,所述加密装置500包括:
第一生成单元501,用于利用IV、KEY以及密码本生成初始随机数;
第二生成单元502,用于根据所述初始随机数,生成动态更新的随机数序列;
乱序处理单元503,用于对明文中的数据进行乱序处理,得到乱序处理后的明文流;
密钥流生成单元504,用于基于所述乱序处理后的明文流,按照预设规则,从所述动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及密码本得到密钥流;
加密单元505,用于将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文。
在一些实施例中,所述第二生成单元502,具体用于:
根据所述初始随机数,结合线性反馈寄存器LFSR,生成动态更新的随机数序列。
在一些实施例中,所述加密装置500还包括第三生成单元,用于:
对明文中的数据进行流化处理,取出中间参数;
基于所述中间参数以及密码本得到所述中间参数对应的密文;
将所述中间参数与所述中间参数对应的密文进行异或处理,得到所述KEY。
在一些实施例中,所述加密装置500还包括第四生成单元,用于:
获取多个第二初始密码;
基于所述多个第二初始密码,结合CR4加密算法,生成对应的多个密码本;
所述第一生成单元501,具体用于:
利用IV、KEY以及所述多个密码本中的第一密码本生成初始随机数;
所述密钥流生成单元504,具体用于:
根据所述取得的对应的随机数以及所述多个密码本中的第二密码本得到密钥流。
在一些实施例中,所述乱序处理单元503,具体用于:
对明文中的数据进行流化处理,得到所述明文对应的一维数组;
对所述明文对应的一维数组进行换位处理,得到换位后的一维数组;
将换位后的一维数组中的每一个数补齐到预设长度;
针对补齐到预设长度后的每一个数,进行分组处理、交换处理以及混淆处理,得到相应数对应的处理后的数;补齐到预设长度后的所有数对应的处理后的数构成了乱序处理后的明文流。
在一些实施例中,所述加密单元505,具体用于:
将所述乱序处理后的明文流与所述密钥流进行异或处理,得到原始密文流;
在所述原始密文流前面增加预设长度的密文头,得到密文。
实际应用时,第一生成单元501、第二生成单元502、第三生成单元、第四生成单元、乱序处理单元503、密钥流生成单元504、以及加密单元505可由加密装置的处理器实现。
需要说明的是:上述实施例提供的加密装置在进行加密处理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将加密装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的加密装置与加密方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
为了实现本发明实施例的方法,本发明实施例还提供一种解密装置。图6为提供的一种解密装置的组成结构示意图,如图6所示,所述解密装置600包括:
第一生成单元601,用于利用IV、KEY以及密码本生成初始随机数;
第二生成单元602,用于根据所述初始随机数,生成动态更新的随机数序列;
密钥流生成单元603,根据密文、所述密码本以及所述动态更新的随机数序列,得到密钥流;
解密单元604,用于将所述密文中的数据与密钥流进行异或处理,得到乱序处理后的明文流;
乱序还原单元605,用于将所述乱序处理后的明文流进行乱序还原处理,得到明文。
实际应用时,第一生成单元601、第二生成单元602、密钥流生成单元603解密单元604及乱序还原单元605可由解密装置的处理器实现。
需要说明的是:上述实施例提供的解密装置在进行解密处理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将解密装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的加密装置与加密方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于上述程序模块的硬件实现,且为了实现本发明实施例的方法,本发明实施例还提供一种电子设备700,所述电子设备700包括:
存储器701,用于存储可执行指令;
处理器702,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的加密方法、或实现本发明实施例提供的解密方法。
实际应用时,如图7所示,所述电子设备700中的各个组件通过总线***703耦合在一起。可理解,总线***703用于实现这些组件之间的连接通信。总线***703除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线***703。
本发明实施例还提供一种存储介质,所述存储介质存储有可执行指令,当所述可执行指令被至少一个处理器执行时,实现本发明实施例提供的加密方法、或实现本发明实施例提供的解密方法。
在一些实施例中,存储介质可以是磁性随机存取存储器(FRAM,FerromagneticRandom Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,ErasableProgrammable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read-Only Memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件***中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
需要说明的是:“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
另外,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种加密方法,其特征在于,所述方法包括:
利用初始化向量IV、第一初始密码KEY以及密码本生成初始随机数;
根据所述初始随机数,生成动态更新的随机数序列;
对明文中的数据进行乱序处理,得到乱序处理后的明文流;
基于所述乱序处理后的明文流,按照预设规则,从所述动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及密码本得到密钥流;
将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文。
2.根据权利要求1所述的方法,其特征在于,所述根据所述初始随机数,生成动态更新的随机数序列,包括:
根据所述初始随机数,结合线性反馈寄存器LFSR,生成动态更新的随机数序列。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对明文中的数据进行流化处理,取出中间参数;
基于所述中间参数以及密码本得到所述中间参数对应的密文;
将所述中间参数与所述中间参数对应的密文进行异或处理,得到所述KEY。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取多个第二初始密码;
基于所述多个第二初始密码,结合CR4加密算法,生成对应的多个密码本;
所述利用IV、KEY以及密码本生成初始随机数时,所述方法包括:
利用IV、KEY以及所述多个密码本中的第一密码本生成初始随机数;
所述根据所述取得的对应的随机数以及密码本得到密钥流时,所述方法包括:
根据所述取得的对应的随机数以及所述多个密码本中的第二密码本得到密钥流。
5.根据权利要求1所述的方法,其特征在于,所述对明文中的数据进行乱序处理,得到乱序处理后的明文流,包括:
对明文中的数据进行流化处理,得到所述明文对应的一维数组;
对所述明文对应的一维数组进行换位处理,得到换位后的一维数组;
将换位后的一维数组中的每一个数补齐到预设长度;
针对补齐到预设长度后的每一个数,进行分组处理、交换处理以及混淆处理,得到相应数对应的处理后的数;补齐到预设长度后的所有数对应的处理后的数构成了乱序处理后的明文流。
6.根据权利要求1所述的方法,其特征在于,所述将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文,包括:
将所述乱序处理后的明文流与所述密钥流进行异或处理,得到原始密文流;
在所述原始密文流前面增加预设长度的密文头,得到密文。
7.一种解密方法,其特征在于,所述方法包括:
利用初始化向量IV、第一初始密码KEY以及密码本生成初始随机数;
根据所述初始随机数,生成动态更新的随机数序列;
根据密文、所述密码本以及所述动态更新的随机数序列,得到密钥流;
将所述密文中的数据与密钥流进行异或处理,得到乱序处理后的明文流;
将所述乱序处理后的明文流进行乱序还原处理,得到明文。
8.一种加密装置,其特征在于,所述装置包括:
第一生成单元,用于利用初始化向量IV、第一初始密码KEY以及密码本生成初始随机数;
第二生成单元,用于根据所述初始随机数,生成动态更新的随机数序列;
乱序处理单元,用于对明文中的数据进行乱序处理,得到乱序处理后的明文流;
密钥流生成单元,用于基于所述乱序处理后的明文流,按照预设规则,从所述动态更新的随机数序列中取得对应的随机数;根据所述取得的对应的随机数以及密码本得到密钥流;
加密单元,用于将所述乱序处理后的明文流与所述密钥流进行异或处理,得到密文。
9.一种解密装置,其特征在于,所述装置包括:
第一生成单元,用于利用初始化向量IV、第一初始密码KEY以及密码本生成初始随机数;
第二生成单元,用于根据所述初始随机数,生成动态更新的随机数序列;
密钥流生成单元,根据密文、所述密码本以及所述动态更新的随机数序列,得到密钥流;
解密单元,用于将所述密文中的数据与密钥流进行异或处理,得到乱序处理后的明文流;
乱序还原单元,用于将所述乱序处理后的明文流进行乱序还原处理,得到明文。
10.一种电子设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至6任一项所述的加密方法、或实现权利要求7所述的解密方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911108467.7A CN110995411B (zh) | 2019-11-13 | 2019-11-13 | 加密、解密方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911108467.7A CN110995411B (zh) | 2019-11-13 | 2019-11-13 | 加密、解密方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110995411A CN110995411A (zh) | 2020-04-10 |
CN110995411B true CN110995411B (zh) | 2022-04-26 |
Family
ID=70084130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911108467.7A Active CN110995411B (zh) | 2019-11-13 | 2019-11-13 | 加密、解密方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110995411B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111865584B (zh) * | 2020-07-21 | 2023-02-28 | 南方电网科学研究院有限责任公司 | 基于伪随机数的数据破碎安全传输方法及装置 |
CN112597453A (zh) * | 2020-12-04 | 2021-04-02 | 光大科技有限公司 | 程序代码加密解密方法和装置 |
CN112948773B (zh) * | 2021-02-07 | 2024-05-24 | 深圳市大梦龙途文化传播有限公司 | 脚本加密与解密方法、终端设备及可读存储介质 |
CN112990822B (zh) * | 2021-03-18 | 2023-12-01 | 新疆运联创科信息技术有限公司 | 一种基于智慧托盘的物联网管理*** |
CN113965321B (zh) * | 2021-10-15 | 2024-05-28 | 杭州安恒信息技术股份有限公司 | 基于密钥流池的实时加解密方法、***、计算机和存储介质 |
CN114338090A (zh) * | 2021-12-08 | 2022-04-12 | 北京达佳互联信息技术有限公司 | 数据安全性检测方法、装置及电子设备 |
CN114338208B (zh) * | 2021-12-31 | 2023-11-28 | 章鱼博士智能技术(上海)有限公司 | 一种报文的数据加密方法及装置、电子设备 |
CN114598470B (zh) * | 2022-03-17 | 2023-12-19 | 北京启明星辰信息安全技术有限公司 | 加密方法、解密方法、设备及计算机可读存储介质 |
CN116455570B (zh) * | 2023-06-14 | 2023-09-05 | 北京集度科技有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1417950A (zh) * | 2001-10-30 | 2003-05-14 | 梁志伟 | 一种信息密文存储与传输的永久乱码本ppds加密方法 |
CN106941407A (zh) * | 2017-05-10 | 2017-07-11 | 成都课迪科技有限公司 | 一种平台数据动态加密的方法和装置 |
CN109510703A (zh) * | 2018-11-23 | 2019-03-22 | 北京海泰方圆科技股份有限公司 | 一种数据加解密方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006100801A1 (ja) * | 2005-03-23 | 2006-09-28 | Kddi Corporation | キーストリーム暗号化装置および方法ならびにプログラム |
US10623176B2 (en) * | 2014-08-20 | 2020-04-14 | Nec Corporation | Authentication encryption method, authentication decryption method, and information-processing device |
-
2019
- 2019-11-13 CN CN201911108467.7A patent/CN110995411B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1417950A (zh) * | 2001-10-30 | 2003-05-14 | 梁志伟 | 一种信息密文存储与传输的永久乱码本ppds加密方法 |
CN106941407A (zh) * | 2017-05-10 | 2017-07-11 | 成都课迪科技有限公司 | 一种平台数据动态加密的方法和装置 |
CN109510703A (zh) * | 2018-11-23 | 2019-03-22 | 北京海泰方圆科技股份有限公司 | 一种数据加解密方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110995411A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110995411B (zh) | 加密、解密方法、装置、电子设备及存储介质 | |
CN1993922B (zh) | 流密码组合***和方法 | |
JP5822970B2 (ja) | 擬似ランダム生成、データ暗号化、およびメッセージ暗号化ハッシングのための暗号化デバイス | |
US5142579A (en) | Public key cryptographic system and method | |
JP4052480B2 (ja) | 疑似乱数発生方法、疑似乱数発生器、及び疑似乱数発生プログラム | |
KR100363457B1 (ko) | 암호체계용매핑레퍼토리 | |
US8553880B2 (en) | Pseudorandom number generating system, encryption system, and decryption system | |
US5452358A (en) | Method and apparatus for improving the security of an electronic codebook encryption scheme utilizing a data dependent encryption function | |
KR101328618B1 (ko) | 보안성을 향상시키는 순열 데이터 변환 | |
EP2460310B1 (en) | Symmetric-key encryption method and cryptographic system employing the method | |
RU2124814C1 (ru) | Способ шифрования блоков цифровых данных | |
US11997200B2 (en) | Generating unique cryptographic keys from a pool of random elements | |
US6301361B1 (en) | Encoding and decoding information using randomization with an alphabet of high dimensionality | |
CN113728583B (zh) | 数字***的增强的随机性 | |
Mihalkovich et al. | MPF based symmetric cipher performance comparison to AES and TDES | |
JP5207153B2 (ja) | 擬似乱数発生システム | |
KR101131167B1 (ko) | 스트림 암호를 위한 키수열 발생 방법 및 장치. 블록 암호를 위한 S-box 및 상기 S-box에서의 치환 방법 | |
JP2012049765A (ja) | 秘匿性増強処理演算装置およびこれを備えた量子暗号通信端末 | |
KR101076747B1 (ko) | 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치 | |
CN112311527A (zh) | 一种主密钥变换为多项式表格子密钥查表的加密方法 | |
Islam et al. | Data encryption standard | |
KR100350207B1 (ko) | 디지털 데이터의 엘-비트 입력 블록들을 엘-비트 출력비트들로 암호 변환하는 방법 | |
RU2783406C1 (ru) | Способ генерации гаммы, используемый при поточном шифровании | |
JP5268011B2 (ja) | 暗号化システム及び復号化システム | |
KR20230046921A (ko) | 랜덤 요소의 풀로부터의 고유 암호화 키 생성 |
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 | ||
CB02 | Change of applicant information |
Address after: Room 221, 2nd floor, Block C, 18 Kechuang 11th Street, Daxing Economic and Technological Development Zone, Beijing, 100176 Applicant after: Jingdong Technology Holding Co.,Ltd. Address before: Room 221, 2nd floor, Block C, 18 Kechuang 11th Street, Daxing Economic and Technological Development Zone, Beijing, 100176 Applicant before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |