Encryption 生成非常大的素数

Encryption 生成非常大的素数,encryption,rsa,primes,public-key,Encryption,Rsa,Primes,Public Key,我正在四处游荡,试图编写RSA的一个实现。问题是我一直在生成大量的素数,而这些素数是生成密钥对所涉及的。有人能告诉我一种快速生成巨大素数/可能素数的方法吗?看看它是如何生成的。另外,看看测试大型伪素数的方法。您没有提到您使用的语言。有些内置了这样做的方法。例如,在java中,这就像调用BigInteger一样简单。Mono有一个BigInteger类,它和java一样是开源的。你可以看看那些。它们可能是可移植的:)g'luck你不能准确地生成素数。随机生成一个大奇数,然后测试该数字是否为素数,如

我正在四处游荡,试图编写RSA的一个实现。问题是我一直在生成大量的素数,而这些素数是生成密钥对所涉及的。有人能告诉我一种快速生成巨大素数/可能素数的方法吗?

看看它是如何生成的。另外,看看测试大型伪素数的方法。

您没有提到您使用的语言。有些内置了这样做的方法。例如,在java中,这就像调用BigInteger一样简单。

Mono有一个BigInteger类,它和java一样是开源的。你可以看看那些。它们可能是可移植的:)g'luck

你不能准确地生成素数。随机生成一个大奇数,然后测试该数字是否为素数,如果不是,则随机生成另一个。有一些素数定律基本上说明你通过随机尝试“命中”一个素数的几率是(2/ln n)

例如,如果你想要一个512位的随机素数,你会在2/(512*ln(2))中找到一个 所以大约每177个数字中就有1个是素数

测试一个数是否为素数有多种方法,一种好的方法是“米勒-拉宾测试”

此外,OpenSSL还有一个很好的实用程序来测试素数:

$ openssl prime 119054759245460753
1A6F7AC39A53511 is not prime

U.Maurer提出了一种算法,该算法生成的随机可证明素数(与统计上高度可能的素数相反)几乎均匀分布在一组特殊大小的素数上。我有一个Python实现,它在以下方面相当有效:

谢谢。这解释了我遇到的许多问题。您也可以在openssl中生成素数:
openssl prime-generate-bits 512
最大的512位素数是
2**512-569
,使用以下方法找到:
python-c'print(“\n”).join([str(2**512-(x*2+1))表示范围内的x(1000)])“| xargs-n 1 openssl素数
根据该功能的实现方式,如果搜索空间减少,您可能会影响密钥选择。为什么您认为TrueCrypt会生成素数?据我所知,它只使用对称密码。