CN115001663A - 一种数据加密方法、装置、计算机设备和存储介质 - Google Patents

一种数据加密方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN115001663A
CN115001663A CN202210623523.6A CN202210623523A CN115001663A CN 115001663 A CN115001663 A CN 115001663A CN 202210623523 A CN202210623523 A CN 202210623523A CN 115001663 A CN115001663 A CN 115001663A
Authority
CN
China
Prior art keywords
data
encrypted
array
public key
constant array
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
CN202210623523.6A
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.)
Bank of China Ltd
Original Assignee
Bank of China 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 Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202210623523.6A priority Critical patent/CN115001663A/zh
Publication of CN115001663A publication Critical patent/CN115001663A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity

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)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种数据加密方法、装置、计算机设备和存储介质,可应用于数据处理领域或金融领域,以实现增强MD5算法加密的复杂度。该方法包括:第一终端根据待加密数据的长度、整数倍的整数值确定公钥和私钥;利用公钥加密第一常量数组的元素,根据预设规则改变加密后的第一常量数组的元素顺序,得到加密数组;将加密数组、私钥发送给第二终端,使得第二终端利用私钥对加密数组进行解密,得到第二常量数组,利用第二常量数组的元素、初始幻数、位移量和加密函数对待加密数据进行加密。利用加密数组的不确定性,赋予参与加密运算的常量数组中的元素顺序不确定性。

Description

一种数据加密方法、装置、计算机设备和存储介质
技术领域
本申请涉及数据处理领域,特别是涉及一种数据加密方法、装置、计算机设备和存储介质。
背景技术
随着互联网科技的发展,各种各样的数据加密算法屡见不鲜,MD5算法因其普遍、稳定、快速的特点,被广泛应用于普通数据加密领域,例如,对数据进行MD5加密,用于信息完整性验证。
然而,目前的MD5算法的加密方式采用计算因子和加密算法,其中,计算因子包括常量数组、位移量、初始幻数等。由于计算因子中的常量数组被公开,进而导致MD5算法容易被破解,安全性差。
发明内容
基于上述问题,本申请提供了一种数据加密方法、装置、计算机设备和存储介质,以实现增强MD5算法加密的复杂度,提高安全性。
本申请实施例公开了如下技术方案:
本申请实施例第一方面提供一种数据加密方法,应用于数据传输的场景,包括:
第一终端获取待加密数据的长度、对所述待加密数据进行数据填充后的数据长度,所述数据填充后的数据长度是预设值的整数倍;
所述第一终端根据所述待加密数据的长度、所述整数倍的整数值确定公钥和私钥;
所述第一终端利用公钥加密第一常量数组的元素,根据预设规则改变加密后的第一常量数组的元素顺序,得到加密数组;或者,根据预设规则改变第一常量数组的元素的顺序得到第二常量数组,利用公钥加密所述第二常量数组,得到加密数组;
所述第一终端将所述加密数组、所述私钥发送给第二终端,使得所述第二终端利用私钥对所述加密数组进行解密,得到第二常量数组,利用所述第二常量数组的元素、初始幻数、位移量和加密函数对所述待加密数据进行加密。
在一个可能的实现方式中,所述根据所述待加密数据的长度、所述整数倍的整数值确定公钥和私钥,包括:
确定大于所述待加密数据长度的第一质数、大于所述整数倍的整数值减1的第二质数;
确定第一质数减1、第二质数减1的最小公倍数;
确定公钥参数,使得所述公钥参数与所述最小公倍数互质,所述公钥参数大于1且小于所述最小公倍数;
确定私钥参数,使得所述私钥参数与所述公钥参数的乘积对所述最小公倍数取余的结果为1,所述私钥参数大于1且小于所述最小公倍数;
根据所述第一质数和所述第二质数的乘积、所述公钥参数确定所述公钥;
根据所述第一质数和所述第二质数的乘积、所述私钥参数确定所述私钥。
在一个可能的实现方式中,对所述待加密数据进行数据填充的方式如下:
在所述待加密数据后填充一个1和多个0,以及所述待加密数据的长度值,使填充后的数据长度为所述预设值的整数倍。
在一个可能的实现方式中,根据预设规则改变加密后的第一常量数组的元素顺序,得到加密数组,包括:根据预设规则确定遍历顺序,根据所述遍历顺序遍历加密后的第一常量数组的元素,得到加密数组。
在一个可能的实现方式中,所述根据预设规则改变第一常量数组的元素的顺序得到第二常量数组,利用公钥加密所述第二常量数组,得到加密数组,包括:
根据预设规则确定遍历顺序,根据所述遍历顺序遍历所述第一常量数组的元素,得到第二常量数组,利用公钥加密所述第二常量数组,得到加密数组。
在一个可能的实现方式中,所述利用所述第二常量数组的元素、初始幻数、位移量和加密函数对所述待加密数据进行加密,包括:
将填充后的数据划分为倍数值个分块数据,每个分块数据长度等于所述预设值;
将每个分块数据划分为多个小组数据;
对每个小组数据依次利用所述第二常量数组、初始幻数、位移量和加密函数进行子循环处理,得到加密数据。
本申请实施例第二方面提供一种数据加密装置,应用于第一终端,包括:
获取单元,用于获取待加密数据的长度、对所述待加密数据进行数据填充后的数据长度,所述数据填充后的数据长度是预设值的整数倍;
确定单元,用于根据所述待加密数据的长度、所述整数倍的整数值确定公钥和私钥;
加密数组获得单元,用于利用公钥加密第一常量数组的元素,根据预设规则改变加密后的第一常量数组的元素顺序,得到加密数组;或者,根据预设规则改变第一常量数组的元素的顺序得到第二常量数组,利用公钥加密所述第二常量数组,得到加密数组;
加密单元,用于将所述加密数组、所述私钥发送给第二终端,使得所述第二终端利用私钥对所述加密数组进行解密,得到第二常量数组,利用所述第二常量数组的元素、初始幻数、位移量和加密函数对所述待加密数据进行加密。
在一个可能的实现方式中,所述确定单元,包括:
质数确定单元,用于确定大于所述待加密数据长度的第一质数、大于所述整数倍的整数值减1的第二质数;
最小公倍数确定单元,用于确定第一质数减1、第二质数减1的最小公倍数;
公钥参数确定单元,用于确定公钥参数,使得所述公钥参数与所述最小公倍数互质,所述公钥参数大于1且小于所述最小公倍数;
私钥参数确定单元,用于确定私钥参数,使得所述私钥参数与所述公钥参数的乘积对所述最小公倍数取余的结果为1,所述私钥参数大于1且小于所述最小公倍数;
公钥确定单元,用于根据所述第一质数和所述第二质数的乘积、所述公钥参数确定所述公钥;
私钥确定单元,用于根据所述第一质数和所述第二质数的乘积、所述私钥参数确定所述私钥。
本申请实施例第三方面提供一种计算机设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如本申请实施例第一方面中任一项所述的数据加密方法。
本申请实施例第四方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行如本申请实施例第一方面中任一项所述的数据加密方法。
相较于现有技术,本申请具有以下有益效果:
本申请提供的一种数据加密方法,应用于数据传输的场景,第一终端获取待加密数据的长度、对待加密数据进行数据填充后的数据长度,数据填充后的数据长度是预设值的整数倍;根据待加密数据的长度、整数倍的整数值确定公钥和私钥;利用公钥加密第一常量数组的元素,将加密后的第一常量数组的元素改变顺序,得到加密数组;或者,改变第一常量数组的元素的顺序得到第二常量数组,利用公钥加密第二常量数组,得到加密数组;将加密数组、私钥发送给第二终端,使得第二终端利用私钥对加密数组进行解密,得到第二常量数组,利用第二常量数组的元素、初始幻数、位移量和加密函数对待加密数据进行加密。利用加密数组的不确定性,赋予参与加密运算的常量数组中的元素顺序不确定性,实现了增强MD5算法加密的复杂度,根据待加密数据的长度确定加密密钥,使用该密钥对常量数组进行加密和解密,避免在数据传输过程中使MD5算法的计算因子即常量数组顺序暴露在外,提高安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种终端设备;
图2为本申请实施例提供的一种数据加密方法流程图;
图3为本申请实施例提供的对原始数据进行数据填充后的数据格式示意图;
图4为本申请实施例提供的一种数据加密装置结构图;
图5为本申请实施例提供的一种计算机设备结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。
正如前文描述,目前的MD5算法计算方式固定,计算因子的具体顺序和内容均已公开。因此,MD5算法被破解的概率很大。
本申请实施例提供一种数据加密方法,为了便于理解本申请实施例提供的数据加密方法,下面将结合图1所示的场景示例进行说明。其中,图1为本申请实施例提供的一种场景示例的示意图。该方法可以应用于第一终端设备101中,也可以应用在是服务器。
在实际应用中,第一终端设备101获取待加密数据的长度、对待加密数据进行数据填充后的数据长度,数据填充后的数据长度是预设值的整数倍;根据待加密数据的长度、整数倍的整数值确定公钥和私钥;利用公钥加密第一常量数组的元素,根据预设规则改变加密后的第一常量数组的元素顺序,得到加密数组;或者,根据预设规则改变第一常量数组的元素的顺序得到第二常量数组,利用公钥加密第二常量数组,得到加密数组;将加密数组、私钥发送给第二终端102,使得第二终端利用私钥对加密数组进行解密,得到第二常量数组,利用第二常量数组的元素、初始幻数、位移量和加密函数对待加密数据进行加密。利用加密数组的不确定性,赋予参与加密运算的常量数组中的元素顺序不确定性,实现了增强MD5算法加密的复杂度,根据待加密数据的长度确定加密密钥,使用该密钥对常量数组进行加密和解密,避免在数据传输过程中使常量数组顺序暴露在外,提高安全性。
本领域技术人员可以理解,图1所示的框架示意图仅是本申请的实施方式可以在其中得以实现的一个示例。本申请实施方式的适用范围不受到该框架任何方面的限制。
基于上述说明,下面将结合附图对本申请实施例提供的数据加密方法进行详细说明。
参见图2,该图为本申请实施例提供的一种数据加密方法流程图。该方法可以应用于数据传输的场景,例如,第一终端将第一常量数组分享给第二终端(即加密方法使用者),或者,第一终端与第二终端进行数据传输,在数据传输完成后,使用数据加密方法验证传输数据的完整性,该方法使MD5计算因子即常量数组顺序具备不确定性,并且在传输过程中避免暴露常量数组的顺序和内容。
如图2所示,该方法包括:
S210、第一终端获取待加密数据的长度、对待加密数据进行数据填充后的数据长度,数据填充后的数据长度是预设值的整数倍。
在一些实施例中,对待加密数据进行数据填充的方式为:在待加密数据后填充一个1和多个0,以及待加密数据的长度值,使填充后的数据长度为预设值的整数倍。
在一个示例中,预设值可以为512。下面以预设值为512为例,介绍数据填充方法:
(1)在原始数据(即待加密数据)的后面填充一个1和无数个0,使其位长对512求余的结果等于448,因此,填充一个1和无数个0的数据的位长将被扩展至N×512+448,N为一个非负整数,N可以是零。
(2)在填充一个1和无数个0的数据后面再附加一个64位二进制表示的原始数据的长度(单位为bit),如果二进制表示的原始数据的长度超过64位,则取低64位。
经过这两步的处理,M=N×512+448+64=(N+1)×512,即填充后的数据的长度M恰好是512的整数倍。如图3所示,该图为本申请实施例提供的对原始数据填充后的数据格式示意图。
S220、第一终端根据待加密数据的长度、整数倍的整数值确定公钥和私钥;
在一些实施例中,确定公钥和私钥的方式如下:
S221、确定大于待加密数据长度的第一质数、大于整数倍的整数值减1的第二质数。
S222、确定第一质数减1、第二质数减1的最小公倍数。
S223、确定公钥参数,使得公钥参数与最小公倍数互质,公钥参数大于1且小于最小公倍数。
S224、确定私钥参数,使得私钥参数与公钥参数的乘积对最小公倍数取余的结果为1,私钥参数大于1且小于最小公倍数。
S225、根据第一质数和第二质数的乘积、公钥参数确定公钥;
S226、根据第一质数和第二质数的乘积、私钥参数确定私钥。
在一个示例中,确定质数p,q,p>L,q>N,L表示待加密数据长度。确定最小公倍数J=(p-1)(q-1)。确定公钥参数E,E与最小公倍数J互质,且1<E<J。确定私钥参数D,使得(D×E)%J=1,且1<D<J。令M=p×q,公钥为(E,M),私钥为(D,M)。
S230、第一终端利用公钥加密第一常量数组的元素,根据预设规则改变加密后的第一常量数组的元素顺序,得到加密数组。或者,根据预设规则改变第一常量数组的元素的顺序得到第二常量数组,利用公钥加密第二常量数组,得到加密数组。
改变常量数组中的元素顺序,进而会改变MD5算法的计算方式,增加复杂度。在进行数据传输时,例如,将改变元素顺序常量数组分享给其他使用者,或者从服务器下载数据的场景,若下载的数据包含的MD5值是根据特定的元素顺序的常量数组计算的,使用MD5算法进行数据完整性验证的场景也需要从服务器获取特定元素顺序的常量数组,在常量数组传输的过程中对其使用公钥加密,MD5算法使用者使用私钥进行解密获得常量数组才能计算得到用于验证的MD5值和下载数据中的MD5值一致则认为下载的数据完整。
在一些实施例中,得到加密数组的具体方式包括:根据预设规则确定遍历顺序,根据遍历顺序遍历加密后的第一常量数组的元素,得到加密数组。或者,根据预设规则确定遍历顺序,根据遍历顺序遍历第一常量数组的元素,得到第二常量数组,利用公钥加密第二常量数组,得到加密数组。
在一个示例中,第一常量数组可以为Kj常量数组,表示为:
Kjt={Kj0,Kj1,Kj2......Kj63},其中,t表示索引值。对常量数组中的每一个元素逐一使用公钥进行加密,改变加密后的元素的顺序。加密数组中的元素内容和顺序是不确定的、对外不可见的。
在一个示例中,第一常量数组Kjt={Kj0,Kj1,Kj2......Kj63},其中,t表示第一常量数组的索引值。将第一常量数组中的元素顺序改变,得到第二常量数组,例如,Kjt1"={Kj1,Kj2,Kj0,Kj63,Kj62,Kj3,Kj4.....Kj61},t1表示第二常量数组的索引值,对第二常量数组中的元素逐一使用公钥进行加密,得到加密数组。
S240、将加密数组、私钥发送给第二终端,使得第二终端利用私钥对加密数组进行解密,得到第二常量数组,利用第二常量数组的元素、初始幻数、位移量和加密函数对待加密数据进行加密。
第二终端无论针对哪种方式得到的加密数组使用私钥解密,得到的都是改变第一常量数组元素顺序的第二常量数组。
本申请实施例利用加密数组的不确定性,赋予参与加密运算的常量数组中的元素顺序不确定性,实现了增强MD5算法加密的复杂度,根据待加密数据的长度确定加密密钥,使用该密钥对常量数组进行加密和解密,避免在数据传输过程中使MD5算法加密的计算因子即常量数组顺序暴露在外,提高安全性。
在一些实施例中,对待加密数据进行加密的方法如下:
S241、将填充后的数据划分为整数值个分块数据,每个分块数据的长度等于预设值。
MD5的实现需要每512个字节进行一次主循环处理,因此,将填充后的长度为(N+1)×512的数据划分为多个分块数据,每个分块数据为512位(64字节),即预设值为512。总共要N+1次主循环处理。
S242、将每个分块数据划分为多个小组数据。
每个分块数据分为16个小组数据,每个小组数据的长度为32位(4字节)。将16个小组数据,命名为M0~M15。
S243、对每个小组数据依次利用第二常量数组、初始幻数、位移量和加密函数进行子循环处理,得到加密数据。
子循环处理:每个小组数据进行一次子循环处理,这16个小组数据即为1轮循环,总共循环4轮,即64次子循环处理。每个主循环处理包含了64次子循环。N+1次主循环处理包含(N+1)×64次子循环处理。
MD5运算要用到一个128位的MD5缓存器,用来保存中间变量和最终结果。该缓存器又可看成是4个32位的寄存器(A,B,C,D),开始于A的低位在前的顺序字节,结束于D的高位在前的顺序字节。
后一次子循环处理的输入为前一次子循环处理的输出,因此,在循环处理开始之前,初始化一个128位的MD缓冲区,也表示为4个32位寄存器(A,B,C,D),即需要拿4个标准数作为初始幻数存入寄存器(A,B,C,D),它们可以为:
a=0x67452301,b=0xefcdab89,c=0x98badcfe,d=0x10325476。
加密函数为4个非线性函数F,G,H,I。在4轮循环中,F,G,H,I会交替使用对数据进行逻辑运算,第一轮使用F,第二轮使用G,第三轮使用H,第四轮使用I。即每隔16次子循环会换一个加密函数。
4个非线性函数可以为:
F(X,Y,Z)=(X&Y)|((~X)&Z);
G(X,Y,Z)=(X&Y)|(Y&(~Z));
H(X,Y,Z)=X^Y^Z;
I(X,Y,Z)=Y^(X|(~Z));
其中,“&”是与,“|”是或,“~”是非,“^”是异或。X,Y,Z仅示例性的表示3个独立的变量。
4个循环操作的核心公式对应4个非线性函数,4个核心公式(也称轮函数)可以为:
FF(a,b,c,d,Mi,s,Kj”):表示a=b+((a+F(b,c,d)+Mi+Kj”)<<<s);
GG(a,b,c,d,Mi,s,Kj”):表示a=b+((a+G(b,c,d)+Mi+Kj”)<<<s);
HH(a,b,c,d,Mi,s,Kj”):表示a=b+((a+H(b,c,d)+Mi+Kj”)<<<s);
II(a,b,c,d,Mi,s,Kj”):表示a=b+((a+I(b,c,d)+Mi+Kj”)<<<s);
在4个核心公式中,Kj”为第二常量数组中的索引值等于当前子循环次数的常量元素,Mi为小组数据M0~M15其中的第i个,a,b,c,d分别为MD缓冲区(A,B,C,D)的当前值,“<<<s”表示循环左移s位,“+”表示:模232加法。
4个核心公式表示的运算关系是:先取b,c,d做非线性函数(F或G或H或I)运算。再将所得结果依次加上a、Mi和Kj”,再将所得结果循环后移指定左移量,然后加上b,最后将得到的结果赋给a。
每次计算后,要对MD缓冲区进行循环右移。记一步运算后MD缓冲区为(AA,BB,CC,DD),循环右移即令A=DD,B=AA,C,=BB,D=CC。
根据MD缓冲区最后的结果(A,B,C,D)输出数据,从A到D,从低字节至高字节的顺序输出128位的数据,作为最后的加密结果。不管原始数据多长,加密后的数据长度都是128位。
上述的Kj”常量数组(第二常量数组),在64次子循环中用到的常量元素都是不同的,Kj”常量数组的索引值,对应子循环处理的次数。
位移量可以为循环左移量S,每轮循环用的S各不相同,每4轮循环为一次主循环处理,总共有4个左移量,4个左移量可以为:
S[0]={7,12,17,22};S[1]={5,9,14,20};
S[2]={4,11,16,23};S[3]={6,10,15,21}。
参见图4,该图为本申请实施例提供一种数据加密装置结构图。该装置可以应用于第一终端,如图4所示,该装置包括:
获取单元410,用于获取待加密数据的长度、对待加密数据进行数据填充后的数据长度,数据填充后的数据长度是预设值的整数倍;
确定单元420,用于根据待加密数据的长度、整数倍的整数值确定公钥和私钥;
加密数组获得单元430,用于利用公钥加密第一常量数组的元素,将加密后的第一常量数组的元素改变顺序,得到加密数组;或者,改变第一常量数组的元素的顺序得到第二常量数组,利用公钥加密第二常量数组,得到加密数组;
加密单元440,用于将加密数组、私钥发送给第二终端,使得第二终端利用私钥对加密数组进行解密,得到第二常量数组,利用第二常量数组的元素、初始幻数、位移量和加密函数对待加密数据进行加密。
在一个可能的实现方式中,确定单元,包括:
质数确定单元,用于确定大于待加密数据长度的第一质数、大于整数倍的整数值减1的第二质数;
最小公倍数确定单元,用于确定第一质数减1、第二质数减1的最小公倍数;
公钥参数确定单元,用于确定公钥参数,使得公钥参数与最小公倍数互质,公钥参数大于1且小于最小公倍数;
私钥参数确定单元,用于确定私钥参数,使得私钥参数与公钥参数的乘积对最小公倍数取余的结果为1,私钥参数大于1且小于最小公倍数;
公钥确定单元,用于根据第一质数和第二质数的乘积、公钥参数确定公钥;
私钥确定单元,用于根据第一质数和第二质数的乘积、私钥参数确定私钥。
在一些实施例中,对待加密数据进行数据填充的方式如下:
在待加密数据后填充一个1和多个0,以及待加密数据的长度值,使填充后的数据长度为预设值的整数倍。
在一些实施例中,加密数组获得单元具体用于:采用预设规则确定遍历顺序,根据遍历顺序遍历加密后的第一常量数组的元素,得到加密数组;或者,采用预设规则确定遍历顺序,根据遍历顺序遍历第一常量数组的元素,得到第二常量数组,利用公钥加密第二常量数组,得到加密数组。
在一些实施例中,加密单元,包括:
分块单元,用于将填充后的数据划分为倍数值个分块数据,每个分块数据长度等于预设值;
分组单元,用于将每个分块数据划分为多个小组数据;
加密子单元,用于对每个小组数据依次利用第二常量数组、初始幻数、位移量和加密函数进行子循环处理,得到加密数据。
本领域技术人员可以理解的是,本申请实施例的数据加密装置还可以实现本申请实施例的数据加密方法中的其他方法,本申请在此不作赘述。
本申请实施例利用加密数组的不确定性,赋予参与加密运算的常量数组中的元素顺序不确定性,实现了增强MD5算法加密的复杂度,根据待加密数据的长度确定加密密钥,使用该密钥对常量数组进行加密和解密,避免在数据传输过程中使常量数组顺序暴露在外,提高安全性。
本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请实施例的数据加密方法。
在实际应用中,所述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
如图5所示,本申请实施例提供的一种计算机设备的结构示意图。图5显示的计算机设备12,计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图5所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图5中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本申请实施例提供的数据加密方法。
本发明提供的一种数据加密方法、装置、计算机设备和存储介质可用于金融领域或其他领域,例如,可用于金融领域中的支付验证的应用场景。其他领域为除金融领域之外的任意领域,例如,数据处理领域。上述仅为示例,并不对本发明提供的发明名称的应用领域进行限定。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

Claims (10)

1.一种数据加密方法,其特征在于,包括:
第一终端获取待加密数据的长度、对所述待加密数据进行数据填充后的数据长度,所述数据填充后的数据长度是预设值的整数倍;
所述第一终端根据所述待加密数据的长度、所述整数倍的整数值确定公钥和私钥;
所述第一终端利用公钥加密第一常量数组的元素,根据预设规则改变加密后的第一常量数组的元素顺序,得到加密数组;或者,根据预设规则改变第一常量数组的元素的顺序得到第二常量数组,利用公钥加密所述第二常量数组,得到加密数组;
所述第一终端将所述加密数组、所述私钥发送给第二终端,使得所述第二终端利用私钥对所述加密数组进行解密,得到第二常量数组,利用所述第二常量数组的元素、初始幻数、位移量和加密函数对所述待加密数据进行加密。
2.根据权利要求1所述的方法,其特征在于,所述根据所述待加密数据的长度、所述整数倍的整数值确定公钥和私钥,包括:
确定大于所述待加密数据长度的第一质数、大于所述整数倍的整数值减1的第二质数;
确定第一质数减1、第二质数减1的最小公倍数;
确定公钥参数,使得所述公钥参数与所述最小公倍数互质,所述公钥参数大于1且小于所述最小公倍数;
确定私钥参数,使得所述私钥参数与所述公钥参数的乘积对所述最小公倍数取余的结果为1,所述私钥参数大于1且小于所述最小公倍数;
根据所述第一质数和所述第二质数的乘积、所述公钥参数确定所述公钥;
根据所述第一质数和所述第二质数的乘积、所述私钥参数确定所述私钥。
3.根据权利要求1所述的方法,其特征在于,对所述待加密数据进行数据填充的方式如下:
在所述待加密数据后填充一个1和多个0,以及所述待加密数据的长度值,使填充后的数据长度为所述预设值的整数倍。
4.根据权利要求1所述的方法,其特征在于,根据预设规则改变加密后的第一常量数组的元素顺序,得到加密数组,包括:根据预设规则确定遍历顺序,根据所述遍历顺序遍历加密后的第一常量数组的元素,得到加密数组。
5.根据权利要求1所述的方法,其特征在于,所述根据预设规则改变第一常量数组的元素的顺序得到第二常量数组,利用公钥加密所述第二常量数组,得到加密数组,包括:
根据预设规则确定遍历顺序,根据所述遍历顺序遍历所述第一常量数组的元素,得到第二常量数组,利用公钥加密所述第二常量数组,得到加密数组。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述利用所述第二常量数组的元素、初始幻数、位移量和加密函数对所述待加密数据进行加密,包括:
将填充后的数据划分为倍数值个分块数据,每个分块数据长度等于所述预设值;
将每个分块数据划分为多个小组数据;
对每个小组数据依次利用所述第二常量数组、初始幻数、位移量和加密函数进行子循环处理,得到加密数据。
7.一种数据加密装置,其特征在于,应用于第一终端,包括:
获取单元,用于获取待加密数据的长度、对所述待加密数据进行数据填充后的数据长度,所述数据填充后的数据长度是预设值的整数倍;
确定单元,用于根据所述待加密数据的长度、所述整数倍的整数值确定公钥和私钥;
加密数组获得单元,用于利用公钥加密第一常量数组的元素,根据预设规则改变加密后的第一常量数组的元素顺序,得到加密数组;或者,根据预设规则改变第一常量数组的元素的顺序得到第二常量数组,利用公钥加密所述第二常量数组,得到加密数组;
加密单元,用于将所述加密数组、所述私钥发送给第二终端,使得所述第二终端利用私钥对所述加密数组进行解密,得到第二常量数组,利用所述第二常量数组的元素、初始幻数、位移量和加密函数对所述待加密数据进行加密。
8.根据权利要求7所述的装置,其特征在于,所述确定单元,包括:
质数确定单元,用于确定大于所述待加密数据长度的第一质数、大于所述整数倍的整数值减1的第二质数;
最小公倍数确定单元,用于确定第一质数减1、第二质数减1的最小公倍数;
公钥参数确定单元,用于确定公钥参数,使得所述公钥参数与所述最小公倍数互质,所述公钥参数大于1且小于所述最小公倍数;
私钥参数确定单元,用于确定私钥参数,使得所述私钥参数与所述公钥参数的乘积对所述最小公倍数取余的结果为1,所述私钥参数大于1且小于所述最小公倍数;
公钥确定单元,用于根据所述第一质数和所述第二质数的乘积、所述公钥参数确定所述公钥;
私钥确定单元,用于根据所述第一质数和所述第二质数的乘积、所述私钥参数确定所述私钥。
9.一种计算机设备,其特征在于,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-6任一项所述的数据加密方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行如权利要求1-6任一项所述的数据加密方法。
CN202210623523.6A 2022-06-02 2022-06-02 一种数据加密方法、装置、计算机设备和存储介质 Pending CN115001663A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210623523.6A CN115001663A (zh) 2022-06-02 2022-06-02 一种数据加密方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210623523.6A CN115001663A (zh) 2022-06-02 2022-06-02 一种数据加密方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN115001663A true CN115001663A (zh) 2022-09-02

Family

ID=83031959

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210623523.6A Pending CN115001663A (zh) 2022-06-02 2022-06-02 一种数据加密方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN115001663A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102016958A (zh) * 2008-06-04 2011-04-13 松下电器产业株式会社 加密装置及加密系统
JP2011135464A (ja) * 2009-12-25 2011-07-07 Nec Corp 認証システム、認証装置、端末装置、認証方法、及びプログラム
CN109347627A (zh) * 2018-09-19 2019-02-15 平安科技(深圳)有限公司 数据加解密方法、装置、计算机设备及存储介质
CN109981282A (zh) * 2019-01-28 2019-07-05 平安科技(深圳)有限公司 提高影像数据传输安全的方法、装置、系统及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102016958A (zh) * 2008-06-04 2011-04-13 松下电器产业株式会社 加密装置及加密系统
JP2011135464A (ja) * 2009-12-25 2011-07-07 Nec Corp 認証システム、認証装置、端末装置、認証方法、及びプログラム
CN109347627A (zh) * 2018-09-19 2019-02-15 平安科技(深圳)有限公司 数据加解密方法、装置、计算机设备及存储介质
CN109981282A (zh) * 2019-01-28 2019-07-05 平安科技(深圳)有限公司 提高影像数据传输安全的方法、装置、系统及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陆琳琳: "MD5算法的技术研究及性能优化", 《中国优秀硕士学位论文全文数据库》, 15 September 2006 (2006-09-15), pages 1 - 3 *

Similar Documents

Publication Publication Date Title
US8345876B1 (en) Encryption/decryption system and method
CN109845182B (zh) 密码消息与认证指令
US20070237324A1 (en) Cryptographic processing
Barker et al. Sp 800-90a. recommendation for random number generation using deterministic random bit generators
CN111444547A (zh) 用于数据完整性证明的方法、设备及计算机存储介质
CN109495266B (zh) 基于随机数的数据加密方法及装置
CN115051798A (zh) 一种随机数生成方法、装置、电子设备及存储介质
CN110210211A (zh) 一种数据保护的方法和计算设备
CN109844750B (zh) 填充操作状态确定
US7809130B1 (en) Password recovery system and method
CN114785524A (zh) 电子印章生成方法、装置、设备和介质
CN110704875A (zh) 客户敏感信息的处理方法、装置、系统、介质及电子设备
CN111339547B (zh) 用于生成数据标签的方法、电子设备及计算机存储介质
CN115632782B (zh) 基于sm4计数器模式的随机数生成方法、系统及设备
US8832450B2 (en) Methods and apparatus for data hashing based on non-linear operations
CN116756758A (zh) 一种数据加密解密方法、装置、计算机设备、存储介质
CN110995749A (zh) 区块链加密方法及装置、电子设备和存储介质
CN109343971B (zh) 一种基于缓存技术的浏览器数据传递方法及装置
CN118118164A (zh) 数据保护方法、基于纵向联邦学习模型的预测方法及装置
KR102522708B1 (ko) 동형 암호문에 대한 통계 연산 수행하는 장치 및 방법
CN115001663A (zh) 一种数据加密方法、装置、计算机设备和存储介质
CN111444548B (zh) 用于数据完整性证明的方法、设备及计算机存储介质
CN111931202A (zh) 用于分布式系统的加密存储方法、终端设备和存储介质
CN113347270A (zh) 一种网络传输文件防水平越权方法和装置
CN115001660A (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