基于混沌加密算法的文件加密方法、电子设备及存储介质转让专利

申请号 : CN202211420678.6

文献号 : CN115622795B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蒋凤虎李凡平石柱国

申请人 : 青岛以萨数据技术有限公司

摘要 :

本发明提供了基于混沌加密算法的文件加密方法、电子设备及存储介质,涉及加密算法领域,该方法包括:获取待加密数组;确定目标混沌序列;得到初始加密数组和初始混沌序列;获取初始加密数组集E和初始混沌序列集Q;将Ei和Qi分配到第i个线程中;若Ei的长度大于H;则得到子加密数组和子混沌序列;得到每组子混沌序列对应的索引数组;根据索引数组得到第一加密数组;对Qi进行类型转换处理,得到字节混沌序列;根据字节混沌序列与第一加密数组,得到第二加密数组;将每组第二加密数组进行合并并输出。本发明通过加密初始值对待加密文件进行加密,加密初始值不唯一,且得到的目标混沌序列也不唯一,提高了加密算法的安全性和可靠性。

权利要求 :

1.基于混沌加密算法的文件加密方法,其特征在于,所述方法包括如下步骤:S100、获取用户输入的待加密文件、加密初始值和迭代次数;

S200、获取所述待加密文件的字节数组,并将其确定为待加密数组;

S300、将所述加密初始值和迭代次数输入预设的混沌系统中,确定目标混沌序列;所述目标混沌序列的字节数量和所述待加密数组的字节数量相同;

S400、将所述待加密数组中的数组元素分成n组,得到n组初始加密数组E1,E2,...,Ei,...,En;其中,i=1,2,...,n;n为中央处理器的线程数量;Ei为第i个初始加密数组;

S500、将所述目标混沌序列中的序列值分成n组,得到n组初始混沌序列Q1,Q2,...,Qi,...,Qn;其中,Qi为第i个初始混沌序列,且Qi的字节数量与Ei的字节数量相同;

S600、将Ei和Qi分配到第i个线程中;

S700、若Ei的长度大于H;则将Ei中的数组元素分成m组,得到m组子加密数组Fi1,Fi2,...,Fir,...,Fim;以及将Qi中的序列值分成m组,得到m组子混沌序列Pi1,Pi2,...,Pir,...,Pim;其中,r=1,2,...,m;m为分组数值;H为预设的长度阈值;Fir为Ei对应的第r个子加密数组;Pir为Qi对应的第r个子混沌序列;

S800、对m组子混沌序列进行二分排序处理,得到索引数组Zi;

S900、根据Zi对m组子加密数组进行排序合并处理,得到第i个线程对应的第一加密数组Yi;

S910、对Qi进行类型转换处理,得到Qi对应的字节混沌序列Si;

S920、将Si与Yi进行异或处理,得到第i个线程对应的第二加密数组Wi;

S930、将W1,W2,...,Wi,...,Wn依次进行合并,得到目标加密数组,并进行输出。

2.根据权利要求1所述的基于混沌加密算法的文件加密方法,其特征在于,所述步骤S300,包括:S310、所述预设的混沌系统以所述加密初始值作为系统初值,以所述迭代次数作为预设的混沌系统需迭代的次数,进行迭代处理,得到目标混沌系统;所述目标混沌系统中包括若干目标混沌序列。

3.根据权利要求1所述的基于混沌加密算法的文件加密方法,其特征在于,所述步骤S400,包括:S410、获取所述待加密数组的数组长度L1;

S420、获取中央处理器的线程数量n;

S430、根据中央处理器的线程数量n,将所述待加密数组分成n组初始加密数组E1,E2,...,Ei,...,En;E1,E2,...,En‑1的长度均为L3=L1/n,En的长度为L4=L1/n+L1%n。

4.根据权利要求3所述的基于混沌加密算法的文件加密方法,其特征在于,所述步骤S500,包括:S510、获取所述目标混沌序列的长度为L2;

S520、获取中央处理器的线程数量n;

S530、根据中央处理器的线程数量n,将所述目标混沌序列分成n组初始混沌序列Q1,Q2,...,Qi,...,Qn;Q1,Q2,...,Qn‑1的长度均为L5=L2/n,Qn的长度为L6=L2/n+L2%n。

5.根据权利要求3所述的基于混沌加密算法的文件加密方法,其特征在于,所述步骤S700,包括:S710、判断L3是否大于H;若L3>H,则执行步骤S720;若L3≤H,则执行步骤S730;

S720、将Ei中的数组元素分成m组,得到m组子加密数组Fi1,Fi2,...,Fir,...,Fim;其中,m=L3%1024+1;

S730、将E1,E2,...,Ei,...,En分别确定为子加密数组。

6.根据权利要求4所述的基于混沌加密算法的文件加密方法,其特征在于,所述步骤S700,还包括:S740、判断L5是否大于H;若L5>H,则执行步骤S750;若L5≤H,则执行步骤S760;

S750、将Qi中的序列值分成m组,得到m组子混沌序列Pi1,Pi2,...,Pir,...,Pim;其中,m=L5%1024+1;

S760、将Q1,Q2,...,Qi,...,Qn分别确定为子混沌序列。

7.根据权利要求1所述的基于混沌加密算法的文件加密方法,其特征在于,所述步骤S900,包括:S901、根据Zi对Fi1,Fi2,...,Fir,...,Fim进行排序,得到排序后加密数组Ui1,Ui2,...,Uir,...,Uim;

S902、将Ui1,Ui2,...,Uir,...,Uim依次进行合并,得到第i个线程对应的第一加密数组Yi。

8.根据权利要求1所述的基于混沌加密算法的文件加密方法,其特征在于,所述步骤S910,包括:S911、将Qi的第g位至第g+a位的浮点类型字符转换为字节字符,并将转换的字节字符依次进行合并以确定为字节混沌序列Si;其中,g为预设的取位值;a为预设的取位数。

9.一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,其特征在于,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1‑8中任意一项所述的基于混沌加密算法的文件加密方法。

10.一种电子设备,其特征在于,包括处理器和权利要求9中所述的非瞬时性计算机可读存储介质。

说明书 :

基于混沌加密算法的文件加密方法、电子设备及存储介质

技术领域

[0001] 本发明涉及加密算法领域,特别是涉及基于混沌加密算法的文件加密方法、电子设备及存储介质。

背景技术

[0002] 目前,在加密算法领域,常用的对称加密算法有DES和AES加密算法,两者都是采用轮加密方式,在原加密算法的基础上根据固定的算法生成轮加密算法,在每轮加密中根据当前生成的轮加密算法的初始值进行加密,所以在原加密算法的初始值固定的情况下,由于算法的固定性,轮加密算法的初始值也是固定的,这就导致只能通过增加加密步骤和算法的复杂度才能提高加密算法的可靠性,且DES和AES加密算法的算法步骤的复杂程度也较高。所以,现有的DES和AES加密算法存在可靠性低且步骤复杂度高的缺点。

发明内容

[0003] 针对上述技术问题,本发明提供基于混沌加密算法的文件加密方法、电子设备及存储介质,至少部分解决现有技术中存在的技术问题,本发明采用的技术方案为:
[0004] 根据本申请的一个方面,提供基于混沌加密算法的文件加密方法,所述方法包括如下步骤:
[0005] S100、获取用户输入的待加密文件、加密初始值和迭代次数;
[0006] S200、获取待加密文件的字节数组,并将其确定为待加密数组;
[0007] S300、将加密初始值和迭代次数输入预设的混沌系统中,确定目标混沌序列;目标混沌序列的字节数量和待加密数组的字节数量相同;
[0008] S400、将待加密数组中的数组元素分成n组,得到n组初始加密数组E1,E2,...,Ei,...,En;其中,i=1,2,...,n;n为中央处理器的线程数量;Ei为第i个初始加密数组;
[0009] S500、将目标混沌序列中的序列值分成n组,得到n组初始混沌序列Q1,Q2,...,Qi,...,Qn;其中,Qi为第i个初始混沌序列,且Qi的字节数量与Ei的字节数量相同;
[0010] S600、将Ei和Qi分配到第i个线程中;
[0011] S700、若Ei的长度大于H;则将Ei中的数组元素分成m组,得到m组子加密数组Fi1,Fi2,...,Fir,...,Fim;以及将Qi中的序列值分成m组,得到m组子混沌序列Pi1,Pi2,...,Pir,...,Pim;其中,r=1,2,...,m;m为分组数值;H为预设的长度阈值;Fir为Ei对应的第r个子加密数组;Pir为Qi对应的第r个子混沌序列;
[0012] S800、对m组子混沌序列进行二分排序处理,得到索引数组Zi;
[0013] S900、根据Zi对m组子加密数组进行排序合并处理,得到第i个线程对应的第一加密数组Yi;
[0014] S910、对Qi进行类型转换处理,得到Qi对应的字节混沌序列Si;
[0015] S920、将Si与Yi进行异或处理,得到第i个线程对应的第二加密数组Wi;
[0016] S930、将W1,W2,...,Wi,...,Wn依次进行合并,得到目标加密数组,并进行输出。
[0017] 在本申请的一种示例性实施例中,步骤S300,包括:
[0018] S310、预设的混沌系统以加密初始值作为系统初值,以迭代次数作为预设的混沌系统需迭代的次数,进行迭代处理,得到目标混沌系统;目标混沌系统中包括若干目标混沌序列。
[0019] 在本申请的一种示例性实施例中,步骤S400,包括:
[0020] S410、获取待加密数组的数组长度L1;
[0021] S420、获取中央处理器的线程数量n;
[0022] S430、根据中央处理器的线程数量n,将所述待加密数组分成n组初始加密数组E1,E2,...,Ei,...,En;E1,E2,...,En‑1的长度均为L3=L1/n,En的长度为L4=L1/n+L1%n。
[0023] 在本申请的一种示例性实施例中,步骤S500,包括:
[0024] S510、获取目标混沌序列的长度为L2;
[0025] S520、获取中央处理器的线程数量n;
[0026] S530、根据中央处理器的线程数量n,将所述目标混沌序列分成n组初始混沌序列Q1,Q2,...,Qi,...,Qn;Q1,Q2,...,Qn‑1的长度均为L5=L2/n,Qn的长度为L6=L2/n+L2%n。
[0027] 在本申请的一种示例性实施例中,步骤S700,包括:
[0028] S710、判断L3是否大于H;若L3>H,则执行步骤S720;若L3≤H,则执行步骤S730;
[0029] S720、将Ei中的数组元素分成m组,得到m组子加密数组Fi1,Fi2,...,Fir,...,Fim;其中,m=L3%1024+1;
[0030] S730、将E1,E2,...,Ei,...,En分别确定为子加密数组。
[0031] 在本申请的一种示例性实施例中,步骤S700,还包括:
[0032] S740、判断L5是否大于H;若L5>H,则执行步骤S750;若L5≤H,则执行步骤S760;
[0033] S750、将Qi中的序列值分成m组,得到m组子混沌序列Pi1,Pi2,...,Pir,...,Pim;其中,m=L5%1024+1;
[0034] S760、将Q1,Q2,...,Qi,...,Qn分别确定为子混沌序列。
[0035] 在本申请的一种示例性实施例中,步骤S900,包括:
[0036] S901、根据Zi对Fi1,Fi2,...,Fir,...,Fim进行排序,得到排序后加密数组Ui1,Ui2,...,Uir,...,Uim;
[0037] S902、将Ui1,Ui2,...,Uir,...,Uim依次进行合并,得到第i个线程对应的第一加密数组Yi。
[0038] 在本申请的一种示例性实施例中,步骤S910,包括:
[0039] S911、将Qi的第g位至第g+a位的浮点类型字符转换为字节字符,并将转换的字节字符依次进行合并以确定为字节混沌序列Si;其中,g为预设的取位值;a为预设的取位数。
[0040] 根据本申请的一个方面,提供一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现所述基于混沌加密算法的加密方法。
[0041] 根据本申请的一个方面,提供一种电子设备,包括处理器和所述非瞬时性计算机可读存储介质。
[0042] 本发明至少具有以下有益效果:
[0043] 本发明通过用户输入的加密初始值和迭代次数,使混沌系统产生目标混沌序列,再根据中央处理器的线程数量,对目标混沌序列和用户输入的待加密数组进行分组并分配到每个线程中,进行多线程加密处理,缩短了加密处理时间,再根据每个线程中的索引数组对子加密数组进行排序合并,得到第一加密数组,对初始混沌序列进行类型转换,转换为和第一加密数组的数据类型相同的字节混沌序列,通过字节混沌序列和第一加密数组得到第二加密数组,再将每个线程中的第二加密数组进行合并得到目标加密数组并输出。本发明通过用户输入的加密初始值对明文的待加密文件进行加密,加密初始值不是固定唯一的,且混沌系统根据用户输入的迭代次数得到的目标混沌序列也不是唯一的,提高了加密算法的安全性和可靠性。

附图说明

[0044] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0045] 图1为本发明实施例提供的基于混沌加密算法的加密方法的流程图。

具体实施方式

[0046] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0047] 目前,在加密算法领域,常用的对称加密算法有DES和AES加密算法,两者都是采用轮加密方式,在原加密算法的基础上根据固定的算法生成轮加密算法,在每轮加密中根据当前生成的轮加密算法的初始值进行加密,所以在原加密算法的初始值固定的情况下,由于算法的固定性,轮加密算法的初始值也是固定的,这就导致只能通过增加加密步骤和算法的复杂度才能提高加密算法的可靠性,且DES和AES加密算法的算法步骤的复杂程度也较高。所以,现有的DES和AES加密算法存在可靠性低且步骤复杂度高的缺点。
[0048] 所以,为了弥补现有常用的DES和AES加密算法中存在的缺陷,提出一种通过混沌加密算法来进行数据加密的加密方法。混沌加密算法是利用混沌系统产生混沌序列作为加密初始值,利用该混沌序列对明文进行加密的算法,与一般的加密技术相比,混沌加密算法利用混沌系统对初始条件的高度敏感性和难以预测性,具有运算速度快、保真度高、安全性好以及足够的带宽和较强的实时功能,分布上不符合概率统计学原理,是一种拟随机的序列,其结构复杂,可以提供具有良好的随机性、相关性和复杂性的拟随机序列,使混沌系统难以重构、分析和预测。
[0049] 所述的基于混沌加密算法的加密方法采用的技术方案为:
[0050] 如图1所示,包括如下步骤:
[0051] S100、获取用户输入的待加密文件、加密初始值和迭代次数;
[0052] 待加密文件为将要加密的数据文件,即明文,其由若干字节数组组成,加密初始值是混沌系统的预设初始值,取值范围为(0,1),迭代次数表示为混沌系统将要迭代的次数。
[0053] S200、获取待加密文件的字节数组,并将其确定为待加密数组;待加密数组即为将要进行加密的数据;
[0054] S300、将加密初始值和迭代次数输入预设的混沌系统中,确定目标混沌序列;目标混沌序列的字节数量和待加密数组的字节数量相同;
[0055] 进一步,步骤S300,包括:
[0056] S310、预设的混沌系统以加密初始值作为系统初值,以迭代次数作为预设的混沌系统需迭代的次数,进行迭代处理,得到目标混沌系统;目标混沌系统中包括若干目标混沌序列;
[0057] 预设的混沌系统可以为logistic混沌系统,混沌系统需要迭代一定次数后才能达到混沌态,为了保证在进行加密操作前混沌系统已经达到混沌态,所以,logistic混沌系统在初始时已经预先迭代了500次,所以,在迭代了500次的混沌系统的基础上,再根据用户输入的迭代次数进行迭代,如用户输入的迭代次数为200次,则混沌系统实际上迭代的次数为700,不过前500次是进行预先迭代的,混沌系统以加密初始值为系统的初始值,以迭代次数为需迭代的次数,进行迭代后,产生若干序列值,若干序列值组成目标混沌序列。
[0058] logistic混沌系统的计算公式为:Xj+1=4Xj(1‑Xj),Xj为第j次迭代的序列值,Xj 取值为[0,1]。
[0059] S400、将待加密数组中的数组元素分成n组,得到n组初始加密数组E1,E2,...,Ei,...,En;其中,i=1,2,...,n;n为中央处理器的线程数量;Ei为第i个初始加密数组;
[0060] 进一步,步骤S400,包括:
[0061] S410、获取待加密数组的数组长度L1;L1为整数型字符;
[0062] S420、获取中央处理器的线程数量n;
[0063] S430、根据中央处理器的线程数量n,将所述待加密数组分成n组初始加密数组E1,E2,...,Ei,...,En;E1,E2,...,En‑1的长度均为L3=L1/n,En的长度为L4=L1/n+L1%n;
[0064] 将待加密数组中的数组元素根据CPU(中央处理器)的线程数量进行均分,若待加密数组的数组长度为500,CPU的线程为10个,则将此500个待加密数组的数组元素平均分成10组初始加密数组,每组初始加密数组的长度为50,若待加密数组的长度不能被CPU的线程数整除,则保证前n‑1个线程中的数组元素数量相同,如待加密数组的长度为500,CPU的线程为8个,则取500/8为前7个线程中初始加密数组的长度,500/8在计算机系统中表示取500除以8的商,即62,将500/8+500%8设定为第8个线程中的初始加密数组的长度,500%8在计算机系统中表示500除以8的余数,即4,所以,前7个线程中初始加密数组的长度为62,第8个线程中的初始加密数组的长度为66,以确保待加密数组中的所有数组元素都分配到每个线程中。
[0065] 将待加密数组的数组元素分成n组,便于后续的多线程执行加密操作。
[0066] S500、将目标混沌序列中的序列值分成n组,得到n组初始混沌序列Q1,Q2,...,Qi,...,Qn;其中,Qi为第i个初始混沌序列,且Qi的字节数量与Ei的字节数量相同;
[0067] 进一步,步骤S500,包括:
[0068] S510、获取目标混沌序列的长度为L2;L2为整数型字符;
[0069] S520、获取中央处理器的线程数量n;
[0070] S530、根据中央处理器的线程数量n,将所述目标混沌序列分成n组初始混沌序列Q1,Q2,...,Qi,...,Qn;Q1,Q2,...,Qn‑1的长度均为L5=L2/n,Qn的长度为L6=L2/n+L2%n;
[0071] 目标混沌序列的分组规则与待加密数组的分组规则相同,以保证前n‑1组初始混沌序列的长度与前n‑1组初始加密数组的长度相同,第n组初始混沌序列的长度与第n组初始加密数组的长度相同,以便后续进行数组分配。
[0072] E1至En‑1的数组长度(数组元素的数量)和Q1至Qn‑1的序列值数量相同,En的数组元素的数量与Qn的序列值数量相同。
[0073] S600、将Ei和Qi分配到第i个线程中;
[0074] 将每一初始加密数组和与其对应的初始混沌序列分配到相同的线程中,如CPU线程为10个,则第1组初始加密数组和第1组初始混沌序列分配到第1个线程中,第2组初始加密数组和第2组初始混沌序列分配到第2个线程中,以此类推,一直至第10组初始加密数组和第10组初始混沌序列分配到第10个线程中,保证每个线程中的初始加密数组和初始混沌序列的长度相同,且将分配的初始加密数组和初始混沌序列按照划分顺序依次分配到对应的线程中,为之后的数组重新合并做基础处理。
[0075] S700、若Ei的长度大于H;则将Ei中的数组元素分成m组,得到m组子加密数组Fi1,Fi2,...,Fir,...,Fim;以及将Qi中的序列值分成m组,得到m组子混沌序列Pi1,Pi2,...,Pir,...,Pim;其中,r=1,2,...,m;m为分组数值;H为预设的长度阈值;Fir为Ei对应的第r个子加密数组;Pir为Qi对应的第r个子混沌序列;
[0076] 进一步,步骤S700,包括:
[0077] S710、判断L3是否大于H;若L3>H,则执行步骤S720;若L3≤H,则执行步骤S730;
[0078] S720、将Ei中的数组元素分成m组,得到m组子加密数组Fi1,Fi2,...,Fir,...,Fim;其中,m=L3%1024+1;
[0079] S730、将E1,E2,...,Ei,...,En分别确定为子加密数组。
[0080] S740、判断L5是否大于H;若L5>H,则执行步骤S750;若L5≤H,则执行步骤S760;
[0081] S750、将Qi中的序列值分成m组,得到m组子混沌序列Pi1,Pi2,...,Pir,...,Pim;其中,m=L5%1024+1;
[0082] S760、将Q1,Q2,...,Qi,...,Qn分别确定为子混沌序列;
[0083] 子加密数组和子混沌序列的确定方法相同,都是比较前n‑1个的长度是否大于H,由于前n‑1个初始加密数组和初始混沌序列的长度相同,所以,只需要对比一个长度,即可对另一组进行处理,如前n‑1个初始加密数组的长度大于H,则表示前n‑1个初始混沌序列的长度也大于H,若其大于H,则表示初始加密数组为长数组,将每组初始加密数组和每组初始混沌序列再进行划分,各自划分为m组,以便于后续进行排序打散处理,m取值为L5%1024+1或L3%1024+1,因为L5和L3相等,所以,初始加密数组和初始混沌序列的分组m是相同的,即将L3除以1024取余再加1,并确定为子加密数组和子混沌序列;若前n‑1个初始加密数组或初始混沌序列的长度不大于H,则表示初始加密数组为短数组,则不进行再划分,直接将初始加密数组确定为子加密数组,将初始混沌序列确定为子混沌序列。
[0084] S800、对m组子混沌序列进行二分排序处理,得到索引数组Zi;
[0085] 二分排序处理为现有的数据处理方法,是在插入第k个元素时,对前面的0~k‑1个元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第k个元素前1位与目标位置之间的所有元素后移,再把第k个元素放在目标位置上,得到每组子混沌序列对应的索引数组。
[0086] S900、根据Zi对m组子加密数组进行排序合并处理,得到第i个线程对应的第一加密数组Yi;
[0087] 进一步,步骤S900,包括:
[0088] S901、根据Zi对Fi1,Fi2,...,Fir,...,Fim进行排序,得到排序后加密数组Ui1,Ui2,...,Uir,...,Uim;
[0089] 同一个线程中有若干个子加密数组,根据索引数组对对应的子加密数组进行排序,排序后的数组为排序后加密数组。
[0090] S902、将Ui1,Ui2,...,Uir,...,Uim依次进行合并,得到第i个线程对应的第一加密数组Yi;
[0091] S910、对Qi进行类型转换处理,得到Qi对应的字节混沌序列Si;
[0092] 进一步,步骤S910,包括:
[0093] S911、将Qi的第g位至第g+a位的浮点类型字符转换为字节字符,并将转换的字节字符依次进行合并以确定为字节混沌序列Si;其中,g为预设的取位值;a为预设的取位数;
[0094] 如g取13,a取7,则将每组初始混沌序列的第13位至第20位的浮点型字符转换为字节字符,并将转换后的字节字符依次进行合并,组成8位字节混沌序列,每个线程中都有一个8位字节混沌序列。
[0095] S920、将Si与Yi进行异或处理,得到第i个中央处理器的线程对应的第二加密数组Wi;
[0096] S930、将W1,W2,...,Wi,...,Wn依次进行合并,得到目标加密数组,并进行输出。
[0097] 每个线程中有一个字节混沌序列和一个第一加密数组,对同一线程中的字节混沌序列和第一加密数组做异或处理,得到每个线程中的第二加密数组,再将所有线程中的第二加密数组进行合并,得到目标加密数组,目标加密数组即为加密后的密文。
[0098] 上述为本发明的数据加密方法,除此之外,还可根据本发明进行解密,解密方法为本发明的加密方法的逆过程,即将密文的目标加密数组倒推至明文的待加密数组,由于,解密方法是加密方法的逆推方法,所以,在此不再赘述。
[0099] 本发明以待加密文件的文件名作为输入,以目标加密数组的文件名作为输出,可以实现对任意类型的文件进行加密处理。通过用户输入的加密初始值和迭代次数,使混沌系统产生目标混沌序列,再根据中央处理器的线程数量,对目标混沌序列和用户输入的待加密数组进行分组并分配到每个线程中,进行多线程加密处理,缩短了加密处理时间,再根据每个线程中的索引数组对子加密数组进行排序合并,得到第一加密数组,对初始混沌序列进行类型转换,转换为和第一加密数组的数据类型相同的字节混沌序列,通过字节混沌序列和第一加密数组得到第二加密数组,再将每个线程中的第二加密数组进行合并得到目标加密数组并输出。本发明通过用户输入的加密初始值对明文的待加密文件进行加密,加密初始值不是固定唯一的,且混沌系统根据用户输入的迭代次数得到的目标混沌序列也不是唯一的,即使解密的数据和加密的数据存在微小差异也会使混沌系统产生完全不同的混沌序列,提高了加密算法的安全性和可靠性。
[0100] 本发明的实施例还提供了一种非瞬时性计算机可读存储介质,该存储介质可设置于电子设备之中以保存用于实现方法实施例中一种方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述实施例提供的方法。
[0101] 本发明的实施例还提供了一种电子设备,包括处理器和前述的非瞬时性计算机可读存储介质。
[0102] 本发明的实施例还提供一种计算机程序产品,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使该电子设备执行本说明书上述描述的根据本发明各种示例性实施方式的方法中的步骤。
[0103] 虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明开的范围由所附权利要求来限定。