CN102023962A - 适用于密码学应用的素数生成方法 - Google Patents
适用于密码学应用的素数生成方法 Download PDFInfo
- Publication number
- CN102023962A CN102023962A CN2009100578877A CN200910057887A CN102023962A CN 102023962 A CN102023962 A CN 102023962A CN 2009100578877 A CN2009100578877 A CN 2009100578877A CN 200910057887 A CN200910057887 A CN 200910057887A CN 102023962 A CN102023962 A CN 102023962A
- Authority
- CN
- China
- Prior art keywords
- prime number
- detection
- prime
- detect
- several
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种适用于密码学应用的素数生成方法,将随机数和一系列小素数通过求最大公约数的方法进行素数预检测,仅当该随机数与这些小素数都互素时能够通过素数预检测,再将通过素数预检测的随机数进行素性检测。由于通过预检测的方法能够排除掉一部分合数,因而使得预检测之后的素性检测的循环次数能够大大减少。传统的素数生成方法为直接对随机数进行素性检测,因此需要进行大量的素性检测运算;在通常实现情况下,素性检测的时间要远远大于求最大公约数的时间,因此本发明的方法能够大幅改善素数生成的运算速度和时间。
Description
技术领域
本发明涉及信息加密及数字签名领域,特别是涉及一种适用于密码学应用的素数生成方法。
背景技术
公钥算法——例如RSA,EL Gamal,Schnorr和Fiat Schamir等,都需要一个或者多个大素数来运算得到算法协议中的密钥。一般来说,这些大素数的位数为512-2048bits(比特位)。因此素数生成算法是公钥算法中必不可少的流程之一。
在不考虑效率的情况下,素数生成最简单的方法就是选择一个随机数r,然后用素性测试(例如费马检测或者Miller-Rabin检测)检测其是否为素数。由于所有的素数除2之外都是奇数,因此一种直接简单的改进,就是选择随机的奇数r,这样就能够减少一半的素性检测循环。更进一步的改进就是在选择r时,使其不为一系列素数中任何一个的倍数,这样就能够减少更多的素性检测循环。
下表为512位的数中,某些集合中平均多少个数中有一个为素数的理论值:
平均多少个数中有一个为素数 | |
不为2的倍数 | 178 |
不为11以内的小素数的倍数 | 89 |
不为256以内的小素数的倍数 | 36 |
不为2048以内的小素数的倍数 | 26 |
从上表可以得出,当对奇数直接进行素性检测时,最坏的情况下平均要进行178次素性检测才能得到素数;当对某个不为11以内的小素数的倍数的数进行素性检测时,最坏的情况下平均要进行89次素性检测才能得到素数,比直接对奇数进行素性检测减少了一半的素性检测循环次数;而当选取的小素数继续增加,素性检测循环次数也随之大幅减少。
传统的素数生成方法是对奇数进行素性检测,如果该奇数通过素性检测,即为素数;如果没有通过素性检测,则对该奇数递加一个偶数,再次进行素性检测。可以看出,传统的素数生成方法的素性检测循环次数过多从而导致素数生成时间过长。
发明内容
本发明要解决的技术问题是提供一种适用于密码学应用的素数生成方法,能够减少预检测之后的素性检测循环次数,从而减少素数生成的时间。
为解决上述技术问题,本发明的适用于密码学应用的素数生成方法是采用如下技术方案实现的:
步骤1,选取一系列素数p1,p2…pn;
步骤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。
步骤3中首次生成r的方法,包括随机选取一个随机数r。
步骤6中所述的公知的概率素性检测,包括费马检测,Miller-Rabin(米勒-拉宾)检测,Solovag-Strassen(索洛维-斯特拉森)检测。
如果r没有通过步骤5的素数预检测或者步骤7的素性检测,返回步骤3重新生成需要检测的数r的方法,包括对r递加一个自然数,或者生成新的随机数。
在本发明的方法中由于使用求最大公约数的方法来进行素数预检测,通过预检测的方法对随机数进行筛选,排除有小素数因子的合数,即通过预检测的数一定不为一系列小素数中任何一个的倍数,因此能够大幅减少预检测之后的素性检测循环。利用计算需要进行预检测的数据和所有选定的素数的乘积的最大公约数,就能判断该数据是否是其中任何一个小素数的倍数。求最大公约数的方法可以使用欧几里德算法,由于在通常实现情况下,素性检测的时间要远远大于欧几里德算法的时间,因此本发明的方法能够大幅改善素数生成的运算速度和时间。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是本发明的基于求最大公约数的素数预检测方法的流程图;
图2是本发明的素数生成(512位素数)方法总体流程图。
具体实施方式
在所述的适用于密码学应用的素数生成方法中,对素数进行预检测是为了计算需要进行预检测的数据和所有选定的素数的乘积的最大公约数。设gcd为所要预检测的数据r(即所述的需要检测的数)和所选取的素数的乘积M的最大公约数。如果gcd等于1,则表明r与M互素,那么r与M中包含的所有因子也都互素,即r不为p1,p2…pn中的任何一个的倍数。对素数进行预检测的控制流程可参见图1。
图2是所述的适用于密码学应用的素数生成方法一个具体实施例,其中所生成的素数为512位,采用373以内的素数进行预检测运算。最大公约数的生成算法采用欧几里德算法。最终如果r没有通过本次检测,则将r’=r+2,再重新进行欧几里德运算。具体的控制流程如下:
步骤1,选取373以内的素数3,5……373。
步骤2,将所选取的素数相乘:M=∏3,5…373。
步骤3,产生512位的随机数r,将r的最高位和最低位置1(置最高位是为了保证r的位数,置最低位是为了保证r为奇数)。
步骤4,运用欧几里德算法计算M和r的最大公约数gcd。
步骤5,如果gcd等于1,那么r通过素数预检测,即r无法整除3,5……373中的任何一个;如果gcd不等于1,说明r可以整除3,5……373中的一个或者多个,则将r’=r+2,返回步骤4。
步骤6,对r进行Miller-Rabin检测。
步骤7,如果r通过Miller-Rabin检测,那么可以认为r就是素数;如果r没有通过Miller-Rabin检测,那么r一定为合数,则将r’=r+2,返回步骤4。
一系列小素数乘积M的计算为预处理步骤。一旦确定了所选用的小素数,M的值即确定,因而不需要在每次预检测时都进行计算M。
在RSA算法中,需要进行素数生成来得到密钥生成中需要的参数,而传统的素数生成方法为直接对随机数进行素性检测,需要进行大量的素性检测运算从而导致时间过长。采用本发明的适用于密码学应用的素数生成方法,通过使用求最大公约数的素数预检测方法能够排除一部分合数,因此能够减少之后的素性检测循环次数,有效减短素数生成的时间,从而有利于推广目前所有包含RSA算法的产品。
以上通过实施例,对本发明进行了详细的说明,但本发明的保护范围不限于所述的实施例。在不脱离本发明原理的情况下,本领域技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (8)
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的方法包括生成新的随机数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100578877A CN102023962A (zh) | 2009-09-10 | 2009-09-10 | 适用于密码学应用的素数生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100578877A CN102023962A (zh) | 2009-09-10 | 2009-09-10 | 适用于密码学应用的素数生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102023962A true CN102023962A (zh) | 2011-04-20 |
Family
ID=43865273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100578877A Pending CN102023962A (zh) | 2009-09-10 | 2009-09-10 | 适用于密码学应用的素数生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102023962A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102279840A (zh) * | 2011-08-31 | 2011-12-14 | 刘诗章 | 一种适用于信息加密技术应用的素数族快速生成方法 |
CN106850212A (zh) * | 2017-03-06 | 2017-06-13 | 西安电子科技大学 | 基于rsa密码算法的密钥生成系统及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1937493A (zh) * | 2006-09-27 | 2007-03-28 | 深圳兆日技术有限公司 | 一种实现快速大素数生成的rsa加密方法 |
-
2009
- 2009-09-10 CN CN2009100578877A patent/CN102023962A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1937493A (zh) * | 2006-09-27 | 2007-03-28 | 深圳兆日技术有限公司 | 一种实现快速大素数生成的rsa加密方法 |
Non-Patent Citations (1)
Title |
---|
张远洋: "素数域上公钥密码加速器库的研究与实现", 《中国优秀硕士论文全文数据库》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102279840A (zh) * | 2011-08-31 | 2011-12-14 | 刘诗章 | 一种适用于信息加密技术应用的素数族快速生成方法 |
CN102279840B (zh) * | 2011-08-31 | 2014-06-18 | 刘诗章 | 一种适用于信息加密技术应用的素数族快速生成方法 |
CN106850212A (zh) * | 2017-03-06 | 2017-06-13 | 西安电子科技大学 | 基于rsa密码算法的密钥生成系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
US7908641B2 (en) | Modular exponentiation with randomized exponent | |
Barreto et al. | Subgroup security in pairing-based cryptography | |
CN100579006C (zh) | 一种实现快速大素数生成的rsa加密方法 | |
WO2015164996A1 (zh) | 椭圆域曲线运算方法和椭圆域曲线运算器 | |
WO1997018652A1 (en) | Efficient cryptographic hash functions and methods for amplifying the security of hash functions and pseudo-random functions | |
CN109145616B (zh) | 基于高效模乘的sm2加密、签名和密钥交换的实现方法及系统 | |
CN102279840B (zh) | 一种适用于信息加密技术应用的素数族快速生成方法 | |
CN101021777B (zh) | 基于除数(2n-1)的有效求模操作运算 | |
Wu et al. | Implementation of efficient method of RSA key-pair generation algorithm | |
Lu et al. | Implementation of fast RSA key generation on smart cards | |
CN102023962A (zh) | 适用于密码学应用的素数生成方法 | |
CN1543725A (zh) | 使用离散对数函数产生不对称加密系统的加密单元的方法 | |
CN112887096B (zh) | 用于签名和密钥交换的素数阶椭圆曲线生成方法及系统 | |
CN1270472C (zh) | 由互质数产生电子密钥的装置及方法 | |
US9419793B2 (en) | Method for generating large prime number in embedded system | |
CN102394747B (zh) | 一种快速嵌入明文到椭圆曲线上一点的方法 | |
CN1449609A (zh) | 由包括在确定间隔内的质数形成电子密钥的方法及采用该方法的装置 | |
Li et al. | A novel algorithm for scalar multiplication in ecdsa | |
CN114513306B (zh) | 数据加密传输方法、系统 | |
CN104407837B (zh) | 一种实现伽罗瓦域乘法的装置及其应用方法 | |
CN1822539A (zh) | 椭圆曲线密码芯片的寄存器堆 | |
Youssef et al. | A low-resource 32-bit datapath ECDSA design for embedded applications | |
CN102929705B (zh) | 一种在嵌入式系统中快速生成坐标点的方法 | |
Knezevic et al. | Modular reduction without precomputational phase |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110420 |