掌桥专利:专业的专利平台
掌桥专利
首页

一种数据加密方法、装置及电子设备

文献发布时间:2023-06-19 16:09:34



技术领域

本发明涉及数据处理技术领域,更具体的说,涉及一种数据加密方法、装置及电子设备。

背景技术

目前,为防止数据被窃取,保证数据的安全性,通常会对数据进行加密。MD5加密算法因其具有普遍、稳定和快速的特点,广泛应用于数据加密保护领域。

然而,现有的MD5加密算法计算方式固定,各个计算因子的具体计算顺序和内容均已公开,因此,采用MD5加密算法加密的数据被破解的概率很大。

综上,如何提供一种数据加密方法,提高加密数据的破解难度,保证加密数据的安全性,成为本领域技术人员亟需解决的技术问题。

发明内容

有鉴于此,本发明公开一种数据加密方法、装置及电子设备,以增强MD5加密算法的复杂度,使最终得到的加密数据的破解难度大大提高。

一种数据加密方法,包括:

获取待加密数据;

采用MD5加密算法对所述待加密数据进行填充,并确定填充后待加密数据的数据长度;

对初始幻数进行数组化,得到多个初始计算因子数组;

基于所述数据长度对各个所述初始计算因子数组进行循环位移,得到顺序随机的各个目标计算因子数组;

对所述待加密数据和各个所述目标计算因子数组采用所述MD5加密算法,得到目标加密数据。

可选的,所述初始幻数包括四个标准数,分别为:

unsigned int a=0x67452301,b=0xefcdab89,c=0x98badcfe,d=0x10325476。

可选的,所述基于所述数据长度,对各个所述初始计算因子数组进行循环位移,得到顺序随机的各个目标计算因子数组,包括:

将所述数据长度对4取余数得到第一数值,以及将所述数据长度对64取余数得到第二数值;

根据所述第一数值和所述第二数值对各个所述初始计算因子数组进行循环位移,得到各个所述目标计算因子数组。

可选的,多个所述初始计算因子数组包括:初始幻数数组V、常量数组Kj和位移量数组S;

V={v

Kj={Kj

S={s[0],s[1],s[2],s[3]}={{7,12,17,22},{5,9,14,20},{4,11,16,23},{6,10,15,21}}。

可选的,各个所述目标计算因子数组包括:目标幻数数组、目标常量数组和目标位移量数组;

所述对所述待加密数据和各个所述目标计算因子数组采用所述MD5加密算法,得到目标加密数据,具体包括:

采用预设算法对所述目标常量数组进行随机性处理,得到随机常量数组;

对所述待加密数据、所述目标幻数数组、所述目标位移量数组和所述随机常量数组采用所述MD5加密算法,得到所述目标加密数据。

可选的,所述预设算法为萤火虫算法或粒子群算法。

一种数据加密装置,包括:

数据获取单元,用于获取待加密数据;

数据长度确定单元,用于采用MD5加密算法对所述待加密数据进行填充,并确定填充后待加密数据的数据长度;

数组化单元,用于对初始幻数进行数组化,得到对应的多个初始计算因子数组;

循环位移单元,用于基于所述数据长度,对各个所述初始计算因子数组进行循环位移,得到顺序随机的各个目标计算因子数组;

加密单元,用于对所述待加密数据和各个所述目标计算因子数字采用所述MD5加密算法,得到目标加密数据。

可选的,所述循环位移单元具体用于:

将所述数据长度对4取余数得到第一数值,以及将所述数据长度对64取余数得到第二数值;

根据所述第一数值和所述第二数值对各个所述初始计算因子数组进行循环位移,得到各个所述目标计算因子数组。

可选的,当各个所述目标计算因子数组包括:目标幻数数组、目标常量数组和目标位移量数组时,所述加密单元具体用于:

采用预设算法对所述目标常量数组进行随机性处理,得到随机常量数组;

对所述待加密数据、所述目标幻数数组、所述目标位移量数组和所述随机常量数组采用所述MD5加密算法,得到所述目标加密数据。

一种电子设备,所述电子设备包括存储器和处理器;

所述存储器用于存储至少一个指令;

所述处理器用于执行所述至少一个指令以实现如权利要求1~6任意一项所述的数据加密方法。

从上述的技术方案可知,本发明公开了一种数据加密方法、装置及电子设备,获取待加密数据,采用MD5加密算法对待加密数据进行填充,并确定填充后待加密数据的数据长度,对初始幻数进行数组化,得到多个初始计算因子数组,基于数据长度对各个初始计算因子数组进行循环位移,得到顺序随机的各个目标计算因子数组,对待加密数据和各个目标计算因子数组采用MD5加密算法得到目标加密数据。本发明在对待加密数据进行加密时,采用的MD5加密算法中的多项计算因子的顺序是随机的,也即本发明采用的是多重因子随机的MD5加密算法,从而增强了MD5加密算法的复杂度,使最终得到的加密数据的破解难度大大提高。同时,多项计算因子的随机性与数据长度相关联,从而保证了同样的数据源每次得到的加密结果一致性。

附图说明

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

图1为本发明实施例公开的一种数据加密方法流程图;

图2为本发明实施例公开的一种数据加密装置的结构示意图;

图3为本发明实施例公开的一种电子设备的结构示意图。

具体实施方式

需要说明的是,本发明提供的数据加密方法及系统可用于网络安全领域或金融领域。上述仅为示例,并不对本发明提供的数据加密方法及系统的应用领域进行限定。

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

本发明实施例公开了一种数据加密方法、装置及电子设备,获取待加密数据,采用MD5加密算法对待加密数据进行填充,并确定填充后待加密数据的数据长度,对初始幻数进行数组化,得到多个初始计算因子数组,基于数据长度对各个初始计算因子数组进行循环位移,得到顺序随机的各个目标计算因子数组,对待加密数据和各个目标计算因子数组采用MD5加密算法得到目标加密数据。本发明在对待加密数据进行加密时,采用的MD5加密算法中的多项计算因子的顺序是随机的,也即本发明采用的是多重因子随机的MD5加密算法,从而增强了MD5加密算法的复杂度,使最终得到的加密数据的破解难度大大提高。同时,多项计算因子的随机性与数据长度相关联,从而保证了同样的数据源每次得到的加密结果一致性。

参见图1,本发明实施例公开的一种数据加密方法流程图,该方法包括:

步骤S101、获取待加密数据;

步骤S102、采用MD5加密算法对所述待加密数据进行填充,并确定填充后待加密数据的数据长度;

其中,对待加密数据进行填充的过程如下:

首先需要对待加密数据进行填充,使其位长对512求余的结果等于448,因此,待加密数据的位长将被扩展至N*512+448,N为一个非负整数,N可以是零。

填充的方法如下:

(1)在待加密数据的后面填充一个1和无数个0,直到满足上面的条件时停止。

(2)在扩充数据后面再附加一个64位二进制表示填充前信息长度(单位为Bit),如果二进制表示的填充前信息长度超过64位,则取低64位。

经过(1)和(2)两步的处理,M=N*512+448+64=(N+1)*512,即待加密数据填充后的长度恰好是512的整数倍。经过(1)和(2)两步处理后,信息变成下面表格所示:

步骤S103、对初始幻数进行数组化,得到多个初始计算因子数组;

MD5加密算法的实现需要每512个字节进行一次处理,后一次处理的输入为前一次处理的输出,因此,在循环处理开始之前,需要拿4个标准数作为输入,也即初始幻数包括四个标准数,分别为:

unsigned int a=0x67452301,b=0xefcdab89,c=0x98badcfe,d=0x10325476。

将初始幻数数组化,V={0x67452301,0xefcdab89,0x98badcfe,0x10325476},得到多个初始计算因子数组,分别是初始幻数数组V,常量数组Kj和位移量数组S,其中,初始幻数数组V包含4项,常量数组Kj包含64项,位移量数组S包含4项,分别如下:

V={v

Kj={Kj

S={s[0],s[1],s[2],s[3]}={{7,12,17,22},{5,9,14,20},{4,11,16,23},{6,10,15,21}}。

步骤S104、基于所述数据长度对各个所述初始计算因子数组进行循环位移,得到顺序随机的各个目标计算因子数组;

需要说明的是,本实施例中的循环位移主要为左循环位移。

传统方案中循环过程如下:

待加密数据填充后,数据长度将是(N+1)/512,将每512位(64字节)作为一块来运算,总共要主循环N+1次。每块细分为16个小组,每组的长度为32位(4字节),这16个小组即为一轮,总共得循环4轮,即64次子循环。总的来说需要(N+1)个主循环,每个主循环包含了64次子循环,传统方案中,是通过不断的改变初始幻数a,b,c,d才能最终得到数据的待加密数据的MD5值。计算次数为(N+1)*64。

具体流程如下:

(1)4个非线性函数

F(x,y,z)=(x&y)|((~x)&z)

G(x,y,z)=(x&z)|(y&(~z))

H(x,y,z)=x^y^z

I(x,y,z)=y^(x|(~z))

在4轮循环中,F,G,H,I会交替使用,第一轮使用F,第二轮使用G,第三轮使用H,第四轮使用I。即每隔16次循环会换一个函数。

(2)Mi

将每一块512位分成16小组,命名为M0~M15,每一等份长度为32位16次循环中,交替使用。

(3)Kj

常量数组,在64次子循环中用到的常量都是不同的。

Kj={

0xd76aa478,0xe8c7b756,0x242070db,0xc1bdceee,0xf57c0faf,0x4787c62a,0xa8304613,

0xfd469501,0x698098d8,0x8b44f7af,0xffff5bb1,0x895cd7be,0x6b901122,0xfd987193,

0xa679438e,0x49b40821,0xf61e2562,0xc040b340,0x265e5a51,0xe9b6c7aa,0xd62f105d,

0x2441453,0xd8a1e681,0xe7d3fbc8,0x21e1cde6,0xc33707d6,0xf4d50d87,0x455a14ed,

0xa9e3e905,0xfcefa3f8,0x676f02d9,0x8d2a4c8a,0xfffa3942,0x8771f681,0x6d9d6122,

0xfde5380c,0xa4beea44,0x4bdecfa9,0xf6bb4b60,0xbebfbc70,0x289b7ec6,0xeaa127fa,

0xd4ef3085,0x4881d050,0xd9d4d039,0xe6db99e5,0x1fa27cf8,0xc4ac5665,0xf4292244,

0x432aff97,0xab9423a7,0xfc93a039,0x655b59c3,0x8f0ccc92,0xffeff47d,0x85845dd1,

0x6fa87e4f,0xfe2ce6e0,0xa3014314,0x4e0811a1,0xf7537e82,0xbd3af235,0x2ad7d2bb,

0xeb86d391}

(4)S

左移量,每轮循环用的S各不相同,每轮总共有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}。

(5)核心公式

总共有四个核心公式,与4个非线性函数一一对应,即每轮使用的核心公式里的公式有差异。

FF(a,b,c,d,Mi,s,Kj):表示b+((a+F(b,c,d)+Mi+Kj)<<

GG(a,b,c,d,Mi,s,Kj):表示b+((a+G(b,c,d)+Mi+Kj)<<

HH(a,b,c,d,Mi,s,Kj):表示b+((a+H(b,c,d)+Mi+Kj)<<

II(a,b,c,d,Mi,s,Kj):表示b+((a+I(b,c,d)+Mi+Kj)<<

而本实施例中,左循环位移,假设一个数组T={t

步骤S105、对所述待加密数据和各个所述目标计算因子数组采用所述MD5加密算法,得到目标加密数据。

本发明将三种计算因子:初始幻数数组V、位移量数组S和常量数组Kj的顺序改为随机顺序,三种计算因子的顺序有4*4*64=1024种组合,从而明显提升了MD5加密算法的加密强度。

综上可知,本发明公开了一种数据加密方法,获取待加密数据,采用MD5加密算法对待加密数据进行填充,并确定填充后待加密数据的数据长度,对初始幻数进行数组化,得到多个初始计算因子数组,基于数据长度对各个初始计算因子数组进行循环位移,得到顺序随机的各个目标计算因子数组,对待加密数据和各个目标计算因子数组采用MD5加密算法得到目标加密数据。本发明在对待加密数据进行加密时,采用的MD5加密算法中的多项计算因子的顺序是随机的,也即本发明采用的是多重因子随机的MD5加密算法,从而增强了MD5加密算法的复杂度,使最终得到的加密数据的破解难度大大提高。同时,多项计算因子的随机性与数据长度相关联,从而保证了同样的数据源每次得到的加密结果一致性。

为进一步优化上述实施例,步骤S104具体可以包括:

将数据长度对4取余数得到第一数值,以及将数据长度对64取余数得到第二数值;

根据第一数值和第二数值对各个所述初始计算因子数组进行循环位移,得到各个目标计算因子数组。

本实施例中,将数据长度分别对4和64取余数,对4取余数的结果在0,1,2,3之中,依据结果对初始幻数数组V和位移量数组S进行左循环位移,对64取余数的结果在0,1.......63之中,依据结果对常量数组Kj进行左循环位移,位移后,3个初始计算因子数组中的项未发生变化,但是顺序发生了改变。

上述实施例中,各个目标计算因子数组包括:目标幻数数组、目标常量数组和目标位移量数组,步骤S105具体可以包括:

采用预设算法对所述目标常量数组进行随机性处理,得到随机常量数组;

对所述待加密数据、所述目标幻数数组、所述目标位移量数组和所述随机常量数组采用MD5加密算法,得到所述目标加密数据。

其中,预设算法为萤火虫算法或粒子群算法。

萤火虫算法是以自然为灵感的启发式优化算法。假设萤火虫之间通过亮度吸引其他的萤火虫,吸引力与它们的亮度成正比,亮度与它们间的距离成反比。对于任意两个萤火虫,次亮度的萤火虫会向高亮度的萤火虫位置移动,而最亮的萤火虫,它会随机移动。亮度与目标函数联系起来,用于求解函数最优解。

D维空间内每个萤火虫的位置为:X=(x

萤火虫之间的相对吸引度为:

每只萤火虫朝着亮度比自身高的萤火虫移动,移动公式为:

其中X

粒子群优化算法是一种进化计算技术,源于模仿对鸟类捕食行为的研究,通过群体中个体之间的协作和信息共享来寻找最优解。

该算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅有两个属性:速度v

公式(1):v

公式(2):x

i=1,2,......,N,N是此群中粒子的总数。

rand()是介于(0,1)之间的随机数,c

ω为惯性因子,可设置为动态,ω

在实际应用中,MD5加密算法需要使用初始幻数、常量数组、位移量等多项计算因子,其中,常量数组的数据量最多,计算最频繁,对结果影响最大。传统方案中,常量数组的值和顺序是固定的,为进一步提高MD5加密算法的加密强度。本发明采用萤火虫优化算法或粒子群算法对目标常量数组进行随机性处理。

具体的,设置萤火虫算法(或粒子群算法)中的rand()值,算法迭代循环次数值i,rand()值在0,1之间;

将MD5加密算法中的目标常量数组以及rand()值,算法迭代循环次数值i输入萤火虫算法(或粒子群算法),经过计算后得到随机常量数组。

与上述方法实施例相对应,本发明还公开了一种数据加密装置的结构示意图,该装置包括:

数据获取单元201,用于获取待加密数据;

数据长度确定单元202,用于采用MD5加密算法对所述待加密数据进行填充,并确定填充后待加密数据的数据长度;

数组化单元203,用于对初始幻数进行数组化,得到对应的多个初始计算因子数组;

MD5加密算法的实现需要每512个字节进行一次处理,后一次处理的输入为前一次处理的输出,因此,在循环处理开始之前,需要拿4个标准数作为输入,也即初始幻数包括四个标准数,分别为:

unsigned int a=0x67452301,b=0xefcdab89,c=0x98badcfe,d=0x10325476。

将初始幻数数组化,V={0x67452301,0xefcdab89,0x98badcfe,0x10325476},得到多个初始计算因子数组,分别是初始幻数数组V,常量数组Kj和位移量数组S,其中,初始幻数数组V包含4项,常量数组Kj包含64项,位移量数组S包含4项,分别如下:

V={v

Kj={Kj

S={s[0],s[1],s[2],s[3]}={{7,12,17,22},{5,9,14,20},{4,11,16,23},{6,10,15,21}}。

循环位移单元204,用于基于所述数据长度,对各个所述初始计算因子数组进行循环位移,得到顺序随机的各个目标计算因子数组;

本实施例中,循环位移采用左循环位移,假设一个数组T={t

加密单元205,用于对所述待加密数据和各个所述目标计算因子数字采用所述MD5加密算法,得到目标加密数据。

本发明将三种计算因子:初始幻数数组V、位移量数组S和常量数组Kj的顺序改为随机顺序,三种计算因子的顺序有4*4*64=1024种组合,从而明显提升了MD5加密算法的加密强度。

综上可知,本发明公开了一种数据加密装置,获取待加密数据,采用MD5加密算法对待加密数据进行填充,并确定填充后待加密数据的数据长度,对初始幻数进行数组化,得到多个初始计算因子数组,基于数据长度对各个初始计算因子数组进行循环位移,得到顺序随机的各个目标计算因子数组,对待加密数据和各个目标计算因子数组采用MD5加密算法得到目标加密数据。本发明在对待加密数据进行加密时,采用的MD5加密算法中的多项计算因子的顺序是随机的,也即本发明采用的是多重因子随机的MD5加密算法,从而增强了MD5加密算法的复杂度,使最终得到的加密数据的破解难度大大提高。同时,多项计算因子的随机性与数据长度相关联,从而保证了同样的数据源每次得到的加密结果一致性。

为进一步优化上述实施例,循环位移单元204具体用于:

将所述数据长度对4取余数得到第一数值,以及将所述数据长度对64取余数得到第二数值;

根据所述第一数值和所述第二数值对各个所述初始计算因子数组进行循环位移,得到各个所述目标计算因子数组。

当各个目标计算因子数组包括:目标幻数数组、目标常量数组和目标位移量数组时,加密单元205具体用于:

采用预设算法对所述目标常量数组进行随机性处理,得到随机常量数组;

对所述待加密数据、所述目标幻数数组、所述目标位移量数组和所述随机常量数组采用所述MD5加密算法,得到所述目标加密数据。

需要说明的是,装置实施例中各组成部分的具体工作原理,请参见方法实施例对应部分,此处不再赘述。

与上述实施例相对应,如图3所示,本发明还提供了一种电子设备,电子设备可以包括:处理器1和存储器2;

其中,处理器1和存储器2通过通信总线3完成相互间的通信;

处理器1,用于执行至少一个指令;

存储器2,用于存储至少一个指令;

处理器1可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。

存储器2可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

其中,处理器执行至少一个指令实现如下功能:

获取待加密数据;

采用MD5加密算法对所述待加密数据进行填充,并确定填充后待加密数据的数据长度;

对初始幻数进行数组化,得到多个初始计算因子数组;

基于所述数据长度对各个所述初始计算因子数组进行循环位移,得到顺序随机的各个目标计算因子数组;

对所述待加密数据和各个所述目标计算因子数组采用所述MD5加密算法,得到目标加密数据。

综上可知,本发明公开了一种电子设备,电子设备获取待加密数据,采用MD5加密算法对待加密数据进行填充,并确定填充后待加密数据的数据长度,对初始幻数进行数组化,得到多个初始计算因子数组,基于数据长度对各个初始计算因子数组进行循环位移,得到顺序随机的各个目标计算因子数组,对待加密数据和各个目标计算因子数组采用MD5加密算法得到目标加密数据。本发明在对待加密数据进行加密时,采用的MD5加密算法中的多项计算因子的顺序是随机的,也即本发明采用的是多重因子随机的MD5加密算法,从而增强了MD5加密算法的复杂度,使最终得到的加密数据的破解难度大大提高。同时,多项计算因子的随机性与数据长度相关联,从而保证了同样的数据源每次得到的加密结果一致性。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 数据加密方法及装置、数据解密方法及装置、电子设备
  • 数据加密方法和装置、解密方法和装置、电子设备和介质
技术分类

06120114720231