我在C中使用gmp而下一个素数不起作用?我试图生成rsa密钥

时间:2012-10-06 21:29:47

标签: c rsa gmp

mpz_t rand1,rand2;
mpz_init (rand1);
mpz_init (rand2);

mpz_random (rand1,512);
//mpz_random (rand2,512);

mpz_nextprime ( rand2, rand1 );
gmp_printf("random %Zd\n", rand2);
//free the big ints
mpz_clear(rand1);
mpz_clear(rand2);

然而,我随机打印它可以工作,但第二个我打电话下一个素数没有打印出来?

1 个答案:

答案 0 :(得分:1)

从信息页面:

  

- 功能:void mpz_random(mpz_t ROP,mp_size_t MAX_SIZE)        生成最多MAX_SIZE分支的随机整数。生成的        随机数不满足任何特定要求        随机性。 MAX_SIZE时会生成负随机数        是否定的。

     

此功能已过时。使用mpz_urandomb' or mpz_urandomm'        代替。

您正在创建一个包含512个肢体的随机(ish)整数,如果肢体为32位,则为16384位;如果肢体为64位,则为32768位。该范围内的素数很少,因此GMP需要一段时间才能找到。

据推测,你打算找到512位的素数?