一种大数因子分解方法和系统与流程

文档序号:29856222发布日期:2022-04-30 09:26阅读:320来源:国知局
一种大数因子分解方法和系统与流程

1.本发明涉及大数运算领域,更具体地说,涉及一种大数因子分解方法和系统。


背景技术:

2.rsa是当前最重要的公开密钥算法,它广泛应用在各领域。rsa的原理是,根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。因此,rsa的安全性决定于对大数分解的难度。在过去的十多年里,为了保证安全,rsa密钥的二进制长度由512位增长到了现在的1024,并且安全性级别高的要求使用2048位。
3.迄今为止,大数因子分解问题既没有被证明多项式时间可解,同时也未证明rsa的破译与模数分解是否同等困难。目前已经出现了十几种大整数分解的算法,具有代表性的大数分解算法有试除法、二次筛法(quadratic sieve,qs)、椭圆曲线算法(elliptic curve method,ecm)以及数域筛法(number field sieve,nfs)。从实际情况来看,目前所拥有的算法存在算法复杂性高、算法流程复杂、耗资巨大等实质性问题,硬件加速大数分解的研究也停留在初始阶段,较好的成果仅仅只是对数域筛法作的一些改进,从1993年至今都没有在算法或架构上跨越性的进展,大数分解问题仍然被认为是非常困难的。因此,分解1024位以上的rsa密钥仍然是一项耗资巨大的工程难题。


技术实现要素:

4.本发明要解决的技术问题在于,针对现有技术的上述缺陷,构造一种大数因子分解方法和系统,通过将计算极为复杂、耗资耗时巨大的大数因子分解任务转换成效率高、速度快的查表任务,能够为大数因子分解提供全新高效的解决方法。
5.本发明解决其技术问题所采用的技术方案是:构造一种大数因子分解方法,包括以下步骤:
6.s1、持续创建大合数表,所述大合数表包括第一质数因子、第二质数因子,以及所述第一质数因子和所述第二质数因子的乘积;
7.s2、在所述大合数表的所述乘积中查找待分解合数,将所述乘积对应的所述第一质数因子和所述第二质数因子作为所述待分解合数的分解结果。
8.在本发明所述的大数因子分解方法中,所述步骤s1包括以下步骤:
9.s11、将所述第一质数因子作为所述大合数表的首行取值,将所述第二质数因子作为所述大合数表的首列取值;
10.s12、将所述第一质数因子和所述第二质数因子的乘积作为所述大合数表的表值;
11.s13、根据设定的合数长度阈值将所述大合数表进行分段以形成多个子表。在本发明所述的大数因子分解方法中,所述步骤s1进一步包括以下步骤:
12.s14、将所述多个子表进行分布式存储。
13.在本发明所述的大数因子分解方法中,所述步骤s2包括以下步骤:
14.s21、判断所述待分解合数的长度,并基于所述长度在所述大合数表中查找对应子表;
15.s22、在所述对应子表中的乘积中查找所述待分解合数,并将查找结果对应的所述第一质数因子和所述第二质数因子作为所述待分解合数的分解结果。
16.在本发明所述的大数因子分解方法中,所述步骤s21包括以下步骤:
17.s211、从用户端接收合数分解请求,所述合数分解请求包括所述待分解合数;
18.s212、对所述待分解合数的位数进行判断从而确认其长度;
19.s213、基于所述长度在所述大合数表中查找所述对应子表的位置。
20.在本发明所述的大数因子分解方法中,所述步骤s22包括以下步骤:
21.s221、基于所述对应子表的位置向管理所述对应子表的数据端发送分解请求;
22.s222、所述数据端在所述对应子表中的乘积中查找所述待分解合数,并将查找到的与所述待分解合数相等的乘积的对应的所述第一质数因子和所述第二质数因子作为所述待分解合数的分解结果;
23.s223、将所述分解结果返回给所述用户端。
24.本发明解决其技术问题采用的另一技术方案是,构造一种大数因子分解系统,包括:
25.大合数分解表装置,用于持续创建大合数表,所述大合数表包括第一质数因子、第二质数因子,以及所述第一质数因子和所述第二质数因子的乘积;
26.搜索装置,用于在所述大合数表的所述乘积中查找待分解合数,将所述乘积对应的所述第一质数因子和所述第二质数因子作为所述待分解合数的分解结果。
27.在本发明所述大数因子分解系统中,所述搜索装置进一步包括:
28.合数预处理模块,用于判断所述待分解合数的长度;
29.分表查询模块,用于基于所述长度在所述大合数表中查找对应子表。
30.在本发明所述大数因子分解系统中,所述大合数分解表装置进一步包括:
31.表持续生成与存储模块,用于将所述第一质数因子作为所述大合数表的首行取值,将所述第二质数因子作为所述大合数表的首列取值;将所述第一质数因子和所述第二质数因子的乘积作为所述大合数表的表值;根据设定的合数长度阈值将所述大合数表进行分段以形成多个子表;
32.表查询模块,用于在所述对应子表中的乘积中查找所述待分解合数,并将查找结果对应的所述第一质数因子和所述第二质数因子作为所述待分解合数的分解结果。
33.在本发明所述大数因子分解系统中,所述大合数分解表装置进一步包括:
34.第一通信模块,用于与所述搜索装置进行通信;
35.表维护模块,用于获取所述表持续生成与存储模块的实时信息,并通过所述第一通信模块为所述搜索装置提供同步信息;
36.表接口模块,用于与所述大合数表进行通信;
37.所述搜索装置进一步包括:
38.用户接口模块,用于从用户端接收合数分解请求,所述合数分解请求包括所述待分解合数;
39.第二通信模块,用于与所述大合数分解表装置进行通信;
40.表同步维护模块,用于从所述表维护模块接收所述同步信息。
41.实施本发明的大数因子分解方法和系统,通过将计算极为复杂、耗资耗时巨大的大数因子分解任务转换成效率高、速度快的查表任务,能够为大数因子分解提供全新高效的解决方法。
附图说明
42.下面将结合附图及实施例对本发明作进一步说明,附图中:
43.图1是本发明的大数因子分解方法的第一优选实施例的流程图;
44.图2是本发明的优选实施例的大合数表的示意图;
45.图3是本发明的大数因子分解方法的优选的分解步骤的流程图;
46.图4是本发明的大数因子分解方法的优选的分解步骤的原理图;
47.图5是本发明的大数因子分解系统的第一优选实施例的原理框图;
48.图6是本发明的大数因子分解系统的第二优选实施例的结构示意图。
具体实施方式
49.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
50.本发明在分析出大合数构造容易而分解困难这一本质后,摆脱了传统分解算法的思维定势,采取逆行思维的方式,首先从最小的质数两两相乘开始构造大合数列表,列表的行列值对应构成的质数,表中内容为对应质数乘积的合数值。由于质数的数量是无限的,所以此表处于持续增长状态,可以采用将此表拆分成多个子表的方式进行存储,当所乘合数满足设定阈值后即在新的子表中进行存储。在成功构造此表后,就将大数因子的分解任务转化为查表任务,只要在表中找到对应的合数,就直接查到对应的两个质数因子。因此,本发明用此方式将极为复杂的大合数分解任务转化为效率极高的查表任务,使用普通的计算机既能快速完成此世界难题任务。将大数因子分解的巨大工作量转化为平时持续性的大合数表的构造,用时进行分区查表这一简单任务。避免了现有算法与技术方案实现流程复杂,且采用专用硬件设备加速大整数分解造成的经费耗资巨大的问题,为解决大数因子分解这一世界难题提出了一种全新的高效解决方法与实现系统。
51.图1是本发明的大数因子分解方法的第一优选实施例的原理框图。如图1所示,在步骤s1中,持续创建大合数表,所述大合数表包括第一质数因子、第二质数因子,以及所述第一质数因子和所述第二质数因子的乘积。
52.在本发明的优选实时中,其创建过程如下:首先将所述第一质数因子作为所述大合数表的首行取值,将所述第二质数因子作为所述大合数表的首列取值;将所述第一质数因子和所述第二质数因子的乘积作为所述大合数表的表值,这样就可以预先地、持续地构建大合数表。如果用单一合数表进行储值不仅会受限于存储环境,也会影响搜索效率,故当所乘合数长度达到设定的合数长度阈值时,将所述大合数表分段,从而生成多个子表,并将多个子表分别进行存储。优选的,可以将所述多个子表进行分布式存储。
53.图2是本发明的优选实施例的大合数表的示意图。下面结合图2进行进一步说明。
为实现大数因子的快速分解,首先需要预先以及不停地创建大合数表。
54.由已知数学概念可知:所谓整数因子分解,即任一大于1的自然数都可以写2个成质数因子的乘积。所以在创建大合数表时,我们采取两质数相乘取积为表值的方式。在此,我们以所乘合数长度达到设定的合数长度阈值n*n为例。如图2所示,所述大合数表可以包括n个子表,n可以为正整数。每个子表中,多个质数进行相乘。我们以子表1为例,其首行取值为第一质数因子2、3、5、7

n1,首列取值为第二质数因子2、3、5、7

n1,其乘积作为表值,即第一质数因子2和第二质数因子2的乘积4作为第1行第1列的表值。我们将第一质数因子的列值设为i,将第二质数因子的行值设为j,那么表格中第i行第j列的取值为第i个第一质数因子和第j个第二质数因子的乘积,例如第3列的第一质数因子为5、第2行的第二质数因子为3,其乘积为15,即第2行第3列的表值为15。依次类推。我们可以预先不停地持续构建大合数表。这样,大合数表的构建是在进行大数分解之前进行的。因此可以采用一般的计算机进行持续计算。将大数因子分解的巨大工作量转化为平时持续性的大合数表的构造时间。
55.由于质数是无穷尽的,整个大合数表的构造的无止境的。所以此大合数表处于持续增长状态,因此如果用单一合数表进行储值不仅会受限于存储环境,也会影响搜索效率。可以采用将此表拆分成多个子表的方式进行存储。即可以根据设定的合数长度阈值将所述大合数表进行分段以形成多个子表,即图2中所示的子表1-n。例如对于子表1,其预设的合数长度阈值为n1*n1的乘积的长度。对于子表2,其预设的合数长度阈值为n2*n2的乘积的长度。依次类推,对于子表n,其预设的合数长度阈值为nn*nn的乘积的长度。这些长度的具体取值可以根据实际需要设置。本领域技术人员可以根据实际计算需要进行设置。
56.在步骤s2中,在所述大合数表的所述乘积中查找待分解合数,将所述乘积对应的所述第一质数因子和所述第二质数因子作为所述待分解合数的分解结果。在通过步骤s1,创建出一定量的大合数表的基础上,就可以执行大数快速分解任务了。因为在成功构造大合数表后,就将大数因子的分解任务转化为查表任务,只要在表中找到对应的合数,就直接查到对应的两个质数因子。
57.图3是本发明的大数因子分解方法的优选的分解步骤的流程图。如图3所示,在步骤s21中,首先判断所述待分解合数的长度,并基于所述长度在所述大合数表中查找对应子表。在本发明的优选实施例中,首先可以从用户端接收合数分解请求,所述合数分解请求包括所述待分解合数。然后,对所述待分解合数的位数进行判断从而确认其长度。最后,基于所述长度在所述大合数表中查找所述对应子表的位置。
58.在步骤s22中,在所述对应子表中的乘积中查找所述待分解合数,并将查找结果对应的所述第一质数因子和所述第二质数因子作为所述待分解合数的分解结果。在本发明的优选实施例中,可以基于所述对应子表的位置向管理所述对应子表的数据端发送分解请求;所述数据端在所述对应子表中的乘积中查找所述待分解合数,并将查找到的与所述待分解合数相等的乘积的对应的所述第一质数因子和所述第二质数因子作为所述待分解合数的分解结果;最后将所述分解结果返回给所述用户端。
59.图4是本发明的大数因子分解方法的优选的分解步骤的原理图。如图4所示,首先由用户端发起合数分解请求。所述合数分解请求包括待分解合数。响应端在收到合数分解请求后会对待分解合数的位数进行判断,确认其长度,然后再根据长度在含有全部子表范围信息的所述大合数表中查找待分解合数所在的具体子表位置。在得到子表位置信息后向
负责具体管理子表的数据端发送分解请求。数据端收到请求后进行计算查找,将找到对应的合值,并根据对应的行列值得到对应的质数因子,并返回给响应端。最后由响应端将分解任务得到的结果返回给请求端。由此,整个流程结束。
60.因此,本发明将极为复杂的大合数分解任务转化为效率极高的查表任务,使用普通的计算机既能快速完成此世界难题任务。将大数因子分解的巨大工作量转化为平时持续性的大合数表的构造,用时进行分区查表这一简单任务。避免了现有算法与技术方案实现流程复杂,且采用专用硬件设备加速大整数分解造成的经费耗资巨大的问题,为解决大数因子分解这一世界难题提出了一种全新的高效解决方法与实现系统。
61.图5是本发明的大数因子分解系统的第一优选实施例的原理框图。如图5所示,所述大数因子分解系统包括大合数分解表装置100和搜索装置200。所述大合数分解表装置100,用于持续创建大合数表。所述大合数表包括第一质数因子、第二质数因子,以及所述第一质数因子和所述第二质数因子的乘积。所述搜索装置200,用于在所述大合数表的所述乘积中查找待分解合数,将所述乘积对应的所述第一质数因子和所述第二质数因子作为所述待分解合数的分解结果。在此,所述大合数分解表装置100和搜索装置200可以参照图1所示优选实施例构造。
62.在本发明的进一步的优选实施例中,所述搜索装置200包括合数预处理模块和分表查询模块。所述大合数分解表装置100包括表持续生成与存储模块和表查询模块。所述表持续生成与存储模块,用于将所述第一质数因子作为所述大合数表的首行取值,将所述第二质数因子作为所述大合数表的首列取值;将所述第一质数因子和所述第二质数因子的乘积作为所述大合数表的表值;根据设定的合数长度阈值将所述大合数表进行分段以形成多个子表。所述合数预处理模块,用于判断所述待分解合数的长度。所述分表查询模块,用于基于所述长度在所述大合数表中查找对应子表。所述表查询模块,用于在所述对应子表中的乘积中查找所述待分解合数,并将查找结果对应的所述第一质数因子和所述第二质数因子作为所述待分解合数的分解结果。
63.在此,所述合数预处理模块、分表查询模块、表持续生成与存储模块和表查询模块可以参照图2-4所示优选实施例构造。
64.图6是本发明的大数因子分解系统的第二优选实施例的结构示意图。如图6所示,所述大数因子分解系统包括大合数分解表装置100和搜索装置200。所述大合数分解表装置100用于负责具体大合数表的子表的创建、维护与提供查询结果。所述搜索模块200,负责具体执行分解任务的响应、处理与同用户交互。
65.如图6所示,所述搜索装置200包含如下5个模块。
66.用户接口模块210,用于从用户端接收合数分解请求,即大合数分解任务1-n,同时提供管理接口对整个搜索模块的具体功能进行手动设定、计划。所述合数分解请求包括所述待分解合数。
67.通信模块220,用于与所述大合数分解表装置进行通信以及同终端用户通信(不限于tcp/ip、不限于是否面向连接,根据具体情况确定)。
68.合数预处理模块230,用于负责在收到终端用户的合数分解请求后,先对待分解合数进行计算确定合数的长度。此计算方式由预先确定的子表范围阈值决定,不限于二进制、十进制。
69.分表查询模块240,用于基于所述长度在所述大合数表中查找对应子表,例如,负责根据表同步模块维护的信息,确定用户请求分解任务的合数在总表中具体的子表位置。
70.表同步维护模块250,用于从大合数分解表装置100的所述表维护模块140接收同步信息。
71.所述大合数分解表装置100也可以包括如下5个模块。
72.通信模块110,用于与所述搜索装置200进行通信。该通信可以采取现有协议或私有协议进行。
73.表持续生成与存储模块120,用于将所述第一质数因子作为所述大合数表的首行取值,将所述第二质数因子作为所述大合数表的首列取值;将所述第一质数因子和所述第二质数因子的乘积作为所述大合数表的表值;根据设定的合数长度阈值将所述大合数表进行分段以形成多个子表。
74.表查询模块130,用于在所述对应子表中的乘积中查找所述待分解合数,并将查找结果对应的所述第一质数因子和所述第二质数因子作为所述待分解合数的分解结果。
75.表维护模块140,用于获取所述表持续生成与存储模块120的实时信息,并通过所述通信模块110为所述搜索装置200的表同步维护模块250提供同步信息;
76.表接口模块150,用于与所述大合数表进行通信,例如与实际表存储交互,执行内部指令与外部指令的转换(后端存储方式根据具体情况选择)。
77.在本发明的进一步的优选实施例中,上述各个模块的功能可以进行组合,或者可以设置在不同的装置中,这些都落入本发明的保护范围。本发明的大合数分解表装置100和搜索装置200可以参照图1-4所示的大数因子分解方法进行构造。
78.因此,本发明可以通过硬件、软件或者软、硬件结合来实现。本发明可以在至少一个计算机系统中以集中方式实现,或者由分布在几个互连的计算机系统中的不同部分以分散方式实现。任何可以实现本发明方法的计算机系统或其它设备都是可适用的。常用软硬件的结合可以是安装有计算机程序的通用计算机系统,通过安装和执行程序控制计算机系统,使其按本发明方法运行。
79.本发明还可以通过计算机程序产品进行实施,程序包含能够实现本发明方法的全部特征,当其安装到计算机系统中时,可以实现本发明的方法。本文件中的计算机程序所指的是:可以采用任何程序语言、代码或符号编写的一组指令的任何表达式,该指令组使系统具有信息处理能力,以直接实现特定功能,或在进行下述一个或两个步骤之后实现特定功能:a)转换成其它语言、编码或符号;b)以不同的格式再现。
80.虽然本发明是通过具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换及等同替代。另外,针对特定情形或材料,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。
81.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1