C 如何为BN_generate_prime的PRNG种子

C 如何为BN_generate_prime的PRNG种子,c,openssl,bignum,prng,C,Openssl,Bignum,Prng,对于在openssl/BN.h中使用BN_generate_prime生成素数的方法,我无法找到答案。此外,我将如何播种该函数使用的任何PRNG 单独的问题,但与我的代码相关(我正在编写一个生成RSA密钥对的程序):如何检查高位是否设置在BIGNUM中?假设我生成一个512位素数。我会使用BN\u is\u bit\u集(prime,512)吗 谢天谢地,BN_generate_prime是一个不推荐使用的函数,他说。此外,它在crypto/bn_depr.c.中有定义。你不应该用它来生成素数。

对于在openssl/BN.h中使用BN_generate_prime生成素数的方法,我无法找到答案。此外,我将如何播种该函数使用的任何PRNG

单独的问题,但与我的代码相关(我正在编写一个生成RSA密钥对的程序):如何检查高位是否设置在BIGNUM中?假设我生成一个512位素数。我会使用BN\u is\u bit\u集(prime,512)吗


谢天谢地,BN_generate_prime是一个不推荐使用的函数,他说。此外,它在crypto/bn_depr.c.中有定义。你不应该用它来生成素数。相反,您应该使用BN_generate_prime_ex。以下是BN_generate_prime_ex的示例用法:

BIGNUM *r;
static const char rnd_seed[] = "string to make the random number generator think it has entropy";

r = BN_new();
RAND_seed(rnd_seed, sizeof rnd_seed); /* or BN_generate_prime_ex may fail */

BN_generate_prime_ex(r, 512, 0, NULL, NULL, NULL);

BN_free(r);
然后你会得到一个512位的伪随机素数。如上例所示,您可以通过RAND_seed为PRNG设定种子

对于第二个问题,请尝试