质数产生的制作方法_2

文档序号:9308558阅读:来源:国知局
X位字替换所述第二随机数的第二 X位字的装置。
[0016]另一特征关于一种计算机可读存储媒体,其具有用于产生质数的一或多个指令,所述指令在由至少一个处理器执行时致使所述处理器:产生具有多个位的第一随机数,对产生的第一随机数执行第一质数测试,确定所述产生的第一随机数未能通过第一质数测试,使用相等数目的随机产生的位替换第一随机数的多个位中的一部分但非所有,以产生第二随机数,以及对第二随机数执行第二质数测试。根据一个方面,所述指令当由处理器执行时进一步致使所述处理器:确定第二随机数未能通过第二质数测试,及使用相等数目的随机产生的位替换第二随机数的多个位的部分但非所有,以及对所述第二随机数运行连续质数测试直至确定所述第二随机数通过所述连续质数测试中的一者。根据另一方面,所述指令当由所述处理器执行时进一步致使所述处理器:在使用第一 X位字替换多个位的所述部分之前,使第一随机数向左或向右旋转至少一个X位字。根据又一个方面,所述指令当由处理器执行时进一步致使所述处理器:确定第二随机数未能通过第二质数测试,使用相等数目的随机产生的位替换第二随机数的多个位中的一部分但非所有,以产生第三随机数,以及对第三随机数执行第三质数测试。
[0017]根据一个方面,第一和第二随机数各自包括多个X位字,并且经替换以产生第二随机数的第一随机数的多个位的所述部分为第一 X位字,且其中所述指令当由处理器执行时进一步致使所述处理器:确定第二随机数未能通过第二质数测试,及使用随机产生的X位字替换第二随机数的第一 X位字,及对所述第二随机数运行连续质数测试直至确定所述第二随机数通过所述连续质数测试中的一者或确定所述第二随机数的所述第一 X位字已替换预定次数。根据另一方面,所述指令当由所述处理器执行时进一步致使所述处理器:在确定第二随机数的第一 X位字已替换预定次数时,使用随机产生的X位字替换第二随机数的第二 X位字。
【附图说明】
[0018]图1说明先前技术中发现的产生质数的典型方法。
[0019]图2说明数字R。
[0020]图3到5说明用于质数产生的方法。
[0021]图6说明质数产生装置的示意框图。
[0022]图7说明质数产生装置的处理电路的示意框图。
[0023]图8说明可与质数产生装置整合的各种电子装置。
【具体实施方式】
[0024]在以下描述中,给出具体细节以提供对本发明的各种方面的透彻理解。然而,所属领域的技术人员应了解,所述方面可在没有这些具体细节的情况下实践。举例来说,可以通过框图展示电路以便避免以不必要的细节混淆所述方面。在其它情况下,可不详细展示众所周知的电路、结构和技术以便不混淆本发明的方面。
[0025]词语“示范性”在本文中用于表示“充当实例、例子或说明”。本文中描述为“示范性”的任何实施方案或方面未必应解释为比本发明的其它方面优选或有利。如本文所使用的“质数测试”及“复合数字测试”可互换使用,并且通常被称作“质数测试”。举例来说,如Miller-Rabin测试的测试可证明数字为复合的。借此,所述测试还证明所述数字并非质数。因此,如本文所使用,对一数执行质数测试包含证明或尝试证明数字为复合的那些测试。如本文所使用的“随机数”可为真随机(例如,其由真随机数产生器(RNG)产生)或可为伪随机(例如,其使用伪随机数产生器(PRNG)产生)。
[0026]概述
[0027]—个实施方案提供一种减少与产生质数相关联的计算延迟的方法。所述方法包含产生具有多个位的第一随机数。接着,对第一随机数执行第一质数测试。接着,确定所述产生的第一随机数是未能通过还是通过了所述第一质数测试。如果第一随机数未能通过所述质数测试,那么使用相等数目的随机产生的位替换所述第一随机数的多个位中的一部分但并非所有,以产生第二随机数。接着,再次对所述第二随机数执行质数测试。重复这个过程(即,受测试的随机数的部分位)直至检测到质数。
[0028]示范性方法
[0029]图2说明根据本发明的一个方面的数字R 200。数字R 200为包括η个x位字202、204、…、206的z位数,其中:z等于或大于二(2) ;n等于或大于二(2);且x等于或大于一(I)。因此,数字R的总位数目z等于n*x。可使用真随机数产生器或伪随机数产生器产生数字R 200。根据一个实例,z位随机数R 200为1,024位数,包括各自为三十二(32)位的三十二(32)字。当然,随机数R 200可为具有大于一的位长度的任何随机数,并且包括各自具有一或多个位的多个字。
[0030]图3说明根据本发明的一个方面的用于质数产生的方法300。首先,产生具有η个X位字的ζ位随机数R(例如,图2中的数字R 200)302。随机数R为可为或可不为质数的候选数字。接着,对候选数字R执行质数测试(例如,Miller-Rabin测试)304。如果候选数字R通过质数测试(即,在一定准确性程度上确定R可为质数),那么可选择随机数R作为质数306。接着,例如,数字R可用于密钥产生。
[0031]另外,如果候选数字R未能通过质数测试(即,在一定准确性程度上确定R并非质数),那么使用随机或伪随机产生的X位值替换随机数R的X位字(例如,图2中的字202)以形成新随机数R2,同时剩余位/字保持相同308。接着将新随机数&反馈到质数测试310。重复这个过程以使得如果随机数R2未能通过质数测试,那么使用新随机或伪随机产生的X位值替换R2的另一不同X位字(例如,图2中的字204)以形成新随机数R 3,并且接着对R3执行质数测试。最终将产生/检测到质数,并且停止所述过程300。仅作为一个实例,产生的随机数R、R2、R3等可为包括三十二个32位字的1,024位数。
[0032]以此方式,并非使用新产生的随机数替换整个随机数R(参见图1中的步骤108),本发明公开了以下方法,其中仅替换随机数R、R2、私等中的选择部分,并且再执行质数测试。举例来说,如果1,024位候选随机数未能通过质数测试,那么可使用新产生的随机位替换1,024位数的相对较小部分(例如,32位部分)同时剩余992位未受影响。仅改变1,024位数中的32位仍允许在所述变化之后存在许多可能的质数(例如,232/(1024*ln(2))=6,051,101质数)。因此,在不必改变其它992位的情况下并不存在质数的概率极低。因此,通过仅产生及替换ζ位数(例如,I, 024位数)的X位字(例如,32位字)并非随机产生全新ζ位数(例如,I, 024位数)可节省许多时间。
[0033]作为一个实例,如果随机数R为1,024位,且x位字各自为32位,那么提出的方法相比先前技术方法(例如,方法100)可节省与随机数产生相关联的时间的96.875%。因此,即使随机数产生仅促成(例如)与质数产生相关联的总延迟的10%,提出的方法可针对给定实例将总质数产生延迟减少约9.7%。
[0034]如上文关于图3所论述,如果新产生的候选随机数R2、私等未能通过质数测试,那么候选随机数的另一 X位部分经替换以产生新随机数。如果,例如,ζ位字包括η个X位字,那么在所述过程300的η次迭代之后(即,执行η次步骤308,因为迄今还没有产生通过质数测试的随机数),原始候选随机数R将已经完全逐字替换以形成全新随机数。这确保所述算法将始终终止以使得检测到/产生质数,是因为如果使用新产生的随机字替换随机数R的相同X位字同时剩余字不经替换,那么与替换的X位字相关联的数字的那些范围内不存在质数的可能性极小。
[0035]参考图2及3,根据一个方面,可执行图3的步骤308以使得所述过程300的每一迭代以连续方式使用随机产生的X位字替换X位字202、204、…、206。也就是说,如果确定第一候选随机数R并非质数,那么通过使用随机X位值替换(例如)第一 X位字202来产生后续随机数R2。如果还确定随机数&并非质数,那么通过使用随机X位值替换第二 X位字204来产生下一后续随机数R3。因此,X位字可以连续方式替换(即,替换的X位字具有连续字编号)直至已经替换所有η个X位字,并且假定尚未检测到质数,再次替换第一 X位字202,接着替换第二 204,等等。
[0036]根据一个方面,可使用转动/偏移命令实施前述实例。举例来说,图3的步骤308可通过使ζ位随机数R向左或向右转动/偏移一个X位字及接着使用随机产生的X位字替换固定位置中的字(例如,最高有效位字或最低有效位字)来执行。
[0037]根据另一方面,可以非连续方式替换X位字202、204、…、206。举例来说,如果确定第一候选随机数R并非质数,那么通过使用随机X位值替换(例如)第二 X位字204来产生后续随机数R2。如果还确定随机数&并非质数,那么通过使用随机X位值替换第η X位字206来产生下一后续随机数R3。因此,在此情况下,以非连续(甚至是随机)方式替换X位字202
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1