现在许多的安全加密算法都要涉及到大素数的运算,比如RSA算法的实现需要两个随机的大素数作为秘钥的“种子”。在我们实际程序编写时,也常常需要用大素数对数据进行处理。但是,如今并没有可以产生任意大素数的有效技术。然而概率性检验素性方面的许多方法已经比较成熟。下面介绍Miller—Rabin算法进行素性检测。
方法/步骤
1
使用伪随机数产生器产生一个奇数p
2
用概率性算法Miller-Rabin算法对p做一次素性检验。
4
如果p算法返回值为FALSE,表明p没有通过检验,p一定不是素数,返回步骤1;如果返回值为TRUE,表明p通过本次检验,p不是素数的概率不会多于1/4
5
重复步骤2足够多次(例如S次),如果p全都通过了检测,可判定p是素数的概率至少有(1-1/4^S)。当此概率高于可接受的阈值,则可认为p是一个素数
6
这个检验只是概率性的,并不能完全确定p是素数,因此可能会产生错误的结果。但是通过提高阈值,也就是增加检验的次数,可使p不是素数的概率接近于0
注意事项
步骤1产生一个随机数也可以采用其他的生成方法
下一篇:备孕注意事项?