会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 电脑安全 / 密码学 / 适用于密码学应用的素数生成方法

适用于密码学应用的素数生成方法

阅读:649发布:2020-05-14

IPRDB可以提供适用于密码学应用的素数生成方法专利检索,专利查询,专利分析的服务。并且本发明公开了一种适用于密码学应用的素数生成方法,将随机数和一系列小素数通过求最大公约数的方法进行素数预检测,仅当该随机数与这些小素数都互素时能够通过素数预检测,再将通过素数预检测的随机数进行素性检测。由于通过预检测的方法能够排除掉一部分合数,因而使得预检测之后的素性检测的循环次数能够大大减少。传统的素数生成方法为直接对随机数进行素性检测,因此需要进行大量的素性检测运算;在通常实现情况下,素性检测的时间要远远大于求最大公约数的时间,因此本发明的方法能够大幅改善素数生成的运算速度和时间。,下面是适用于密码学应用的素数生成方法专利的具体信息内容。

1.一种适用于密码学应用的素数生成方法,其特征在于:步骤1,选取一系列素数p1,p2…pn;

步骤2,将所选取的素数相乘:

步骤3,生成需要检测的数r;

步骤4,计算M和r的最大公约数gcd;

步骤5,如果最大公约数gcd等于1,那么需要检测的数r通过素数预检测,即需要检测的数r无法整除p1,p2…pn中的任何一个素数,能够对该数r进行素性检测;如果最大公约数gcd不等于1,说明需要检测的数r能够整除p1,p2…pn中的一个或者多个素数,则返回步骤3重新生成需要检测的数r;

步骤6,对需要检测的数r进行公知的概率素性检测;

步骤7,如果需要检测的数r通过素性检测,那么认为需要检测的数r就是素数;如果需要检测的数r没有通过素性检测,那么需要检测的数r一定为合数,则返回步骤3重新生成需要检测的数r。

2.如权利要求1所述的素数生成方法,其特征在于:步骤3中首次生成r的方法包括随机选取一个随机数r。

3.如权利要求1所述的素数生成方法,其特征在于:步骤4中所述的最大公约数采用欧几里德算法进行计算。

4.如权利要求1所述的素数生成方法,其特征在于:步骤6中所述的公知的概率素性检测包括费马检测。

5.如权利要求1所述的素数生成方法,其特征在于:步骤6中所述的公知的概率素性检测包括Mil1er-Rabin检测。

6.如权利要求1所述的素数生成方法,其特征在于:步骤6中所述的公知的概率素性检测包括Solovag-Strassen检测。

7.如权利要求1所述的素数生成方法,其特征在于:如果r没有通过步骤5的素数预检测或者步骤7的素性检测,返回步骤3重新生成需要检测的数r的方法包括对r递加一个自然数。

8.如权利要求1所述的素数生成方法,其特征在于:如果r没有通过步骤5的素数预检测或者步骤7的素性检测,返回步骤3重新生成需要检测的数r的方法包括生成新的随机数。

说明书全文

适用于密码学应用的素数生成方法

技术领域

[0001] 本发明涉及信息加密及数字签名领域,特别是涉及一种适用于密码学应用的素数生成方法。

背景技术

[0002] 公钥算法——例如RSA,EL Gamal,Schnorr和Fiat Schamir等,都需要一个或者多个大素数来运算得到算法协议中的密钥。 一般来说,这些大素数的位数为512-2048bits(比特位)。 因此素数生成算法是公钥算法中必不可少的流程之一。
[0003] 在不考虑效率的情况下,素数生成最简单的方法就是选择一个随机数r,然后用素性测试(例如费马检测或者Miller-Rabin检测)检测其是否为素数。 由于所有的素数除2之外都是奇数,因此一种直接简单的改进,就是选择随机的奇数r,这样就能够减少一半的素性检测循环。 更进一步的改进就是在选择r时,使其不为一系列素数中任何一个的倍数,这样就能够减少更多的素性检测循环。
[0004] 下表为512位的数中,某些集合中平均多少个数中有一个为素数的理论值:
[0005]平均多少个数中有一个为素数
不为2的倍数 178
不为11以内的小素数的倍数 89
不为256以内的小素数的倍数 36
不为2048以内的小素数的倍数 26
[0006] 从上表可以得出,当对奇数直接进行素性检测时,最坏的情况下平均要进行178次素性检测才能得到素数;当对某个不为11以内的小素数的倍数的数进行素性检测时,最坏的情况下平均要进行89次素性检测才能得到素数,比直接对奇数进行素性检测减少了一半的素性检测循环次数;而当选取的小素数继续增加,素性检测循环次数也随之大幅减少。
[0007] 传统的素数生成方法是对奇数进行素性检测,如果该奇数通过素性检测,即为素数;如果没有通过素性检测,则对该奇数递加一个偶数,再次进行素性检测。 可以看出,传统的素数生成方法的素性检测循环次数过多从而导致素数生成时间过长。

发明内容

[0008] 本发明要解决的技术问题是提供一种适用于密码学应用的素数生成方法,能够减少预检测之后的素性检测循环次数,从而减少素数生成的时间。
[0009] 为解决上述技术问题,本发明的适用于密码学应用的素数生成方法是采用如下技术方案实现的:
[0010] 步骤1,选取一系列素数p1,p2…pn;
[0011] 步骤2,将所选取的素数相乘:
[0012] 步骤3,生成需要检测的数r;
[0013] 步骤4,计算M和r的最大公约数gcd;
[0014] 步骤5,如果最大公约数gcd等于1,那么需要检测的数r通过素数预检测,即需要检测的数r无法整除p1,p2…pn中的任何一个素数,能够对该数r进行素性检测;如果最大公约数gcd不等于1,说明需要检测的数r能够整除p1,p2…pn中的一个或者多个素数,则返回步骤3重新生成需要检测的数r;
[0015] 步骤6,对需要检测的数r进行公知的概率素性检测;
[0016] 步骤7,如果需要检测的数r通过素性检测,那么认为需要检测的数r就是素数;如果需要检测的数r没有通过素性检测,那么需要检测的数r一定为合数,则返回步骤3重新生成需要检测的数r。
[0017] 步骤3中首次生成r的方法,包括随机选取一个随机数r。
[0018] 步骤6中所述的公知的概率素性检测,包括费马检测,Miller-Rabin(米勒-拉宾)检测,Solovag-Strassen(索洛维-斯特拉森)检测。
[0019] 如果r没有通过步骤5的素数预检测或者步骤7的素性检测,返回步骤3重新生成需要检测的数r的方法,包括对r递加一个自然数,或者生成新的随机数。
[0020] 在本发明的方法中由于使用求最大公约数的方法来进行素数预检测,通过预检测的方法对随机数进行筛选,排除有小素数因子的合数,即通过预检测的数一定不为一系列小素数中任何一个的倍数,因此能够大幅减少预检测之后的素性检测循环。 利用计算需要进行预检测的数据和所有选定的素数的乘积的最大公约数,就能判断该数据是否是其中任何一个小素数的倍数。 求最大公约数的方法可以使用欧几里德算法,由于在通常实现情况下,素性检测的时间要远远大于欧几里德算法的时间,因此本发明的方法能够大幅改善素数生成的运算速度和时间。

附图说明

[0021] 下面结合附图与具体实施方式对本发明作进一步详细的说明:
[0022] 图1是本发明的基于求最大公约数的素数预检测方法的流程图;
[0023] 图2是本发明的素数生成(512位素数)方法总体流程图。

具体实施方式

[0024] 在所述的适用于密码学应用的素数生成方法中,对素数进行预检测是为了计算需要进行预检测的数据和所有选定的素数的乘积的最大公约数。 设gcd为所要预检测的数据r(即所述的需要检测的数)和所选取的素数的乘积M 的最大公约数。 如果gcd等于1,则表明r与M互素,那么r与M中包含的所有因子也都互素,即r不为p1,p2…pn中的任何一个的倍数。 对素数进行预检测的控制流程可参见图1。
[0025] 图2是所述的适用于密码学应用的素数生成方法一个具体实施例,其中所生成的素数为512位,采用373以内的素数进行预检测运算。最大公约数的生成算法采用欧几里德算法。 最终如果r没有通过本次检测,则将r’=r+2,再重新进行欧几里德运算。具体的控制流程如下:
[0026] 步骤1,选取373以内的素数3,5……373。
[0027] 步骤2,将所选取的素数相乘:M=∏3,5…373。
[0028] 步骤3,产生512位的随机数r,将r的最高位和最低位置1(置最高位是为了保证r的位数,置最低位是为了保证r为奇数)。
[0029] 步骤4,运用欧几里德算法计算M和r的最大公约数gcd。
[0030] 步骤5,如果gcd等于1,那么r通过素数预检测,即r无法整除3,5……373中的任何一个;如果gcd不等于1,说明r可以整除3,5……373中的一个或者多个,则将r’=r+2,返回步骤4。
[0031] 步骤6,对r进行Miller-Rabin检测。
[0032] 步骤7,如果r通过Miller-Rabin检测,那么可以认为r就是素数;如果r没有通过Miller-Rabin检测,那么r一定为合数,则将r’=r+2,返回步骤4。
[0033] 一系列小素数乘积M的计算为预处理步骤。一旦确定了所选用的小素数,M的值即确定,因而不需要在每次预检测时都进行计算M。
[0034] 在RSA算法中,需要进行素数生成来得到密钥生成中需要的参数,而传统的素数生成方法为直接对随机数进行素性检测,需要进行大量的素性检测运算从而导致时间过长。 采用本发明的适用于密码学应用的素数生成方法,通过使用求最大公约数的素数预检测方法能够排除一部分合数,因此能够减少之后的素性检测循环次数,有效减短素数生成的时间,从而有利于推广目前所有包含RSA算法的产品。
[0035] 以上通过实施例,对本发明进行了详细的说明,但本发明的保护范围不限于所述的实施例。 在不脱离本发明原理的情况下,本领域技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用