我无法找到关于在openssl/bn.h中使用BN_generate_prime生成素数的答案。另外,我将如何对该函数使用的任何PRNG进行播种?
一个单独的问题但与我的代码相关(我正在编写一个生成RSA key 对的程序):如何检查BIGNUM中的高位是否已设置?假设我生成了512位素数。我会使用BN_is_bit_set(prime,512)吗?
谢谢
最佳答案
here说,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设置种子。
对于第二个问题,请尝试BN_num_bits。
关于c - 如何为BN_generate_prime的PRNG播种,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18245901/