Algorithm 为RSA加密算法生成大素数

Algorithm 为RSA加密算法生成大素数,algorithm,math,encryption,rsa,primes,Algorithm,Math,Encryption,Rsa,Primes,我应该如何为RSA生成大素数 正如你们所知,我们需要大素数来为RSA加密算法生成私钥和公钥 如果我想用任何筛选算法来做这件事,这需要很多时间。 最好的方法是什么?可能的基本测试(更准确地说是成分测试)通常用于工业强度基本测试。有一些方法可以生成可证明素数,比如Maurer算法 关于素数生成理论和实现的一个优秀资源是。您最好使用加密例程库。有几个问题,它们充满了微妙的问题,希望大多数问题在现有的实现中得到了解决,但在新的实现中还没有得到解决 但是,我已经尝试过使用Python和GMP生成素数:

我应该如何为RSA生成大素数

正如你们所知,我们需要大素数来为RSA加密算法生成私钥和公钥

如果我想用任何筛选算法来做这件事,这需要很多时间。 最好的方法是什么?

可能的基本测试(更准确地说是成分测试)通常用于工业强度基本测试。有一些方法可以生成可证明素数,比如Maurer算法


关于素数生成理论和实现的一个优秀资源是。

您最好使用加密例程库。有几个问题,它们充满了微妙的问题,希望大多数问题在现有的实现中得到了解决,但在新的实现中还没有得到解决

但是,我已经尝试过使用Python和GMP生成素数:


简言之,试用除法最适合于小数字,Miller Rabin可以作为一种快速过滤/测试大一点的数字的方法,但有时仍然会使用试用除法来获得有保证的素数。

如果您想制作一些大素数,可以使用pycrypto模块在python中编写一个程序。这个帖子会很有帮助


检查(2**n-1)是否是增加n值的首要条件。我真的希望这是家庭作业在获得安全的RSA实现方面有很多微妙之处。@Per Blakh:|,这真的不是家庭作业,只是我试图开发免费的开源项目。看看OpenSSL的bn子系统是如何做到的:@Gilbert:这是个坏主意,这些数字的乘积可以在多项式时间内分解。
from Crypto.PublicKey import RSA
RSAkey = RSA.generate(1024)
print getattr(RSAkey.key, 'n')
print getattr(RSAkey.key, 'p')
print getattr(RSAkey.key, 'q')