5

openssl/bn.h で BN_generate_prime を使用して素数を生成するために使用されるものについての答えを見つけることができませんでした。また、この関数が使用する PRNG をシードするにはどうすればよいですか?

別の質問ですが、私のコードに関連しています(RSAキーペアを生成するプログラムを書いています):上位ビットがBIGNUMに設定されているかどうかを確認するにはどうすればよいですか? 512 ビット素数を生成するとします。BN_is_bit_set(prime, 512) を使用しますか?

ありがとう

4

1 に答える 1

8

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 ビットの疑似乱数の素数が得られます。上記の例のように、PRNG を RAND_seed でシードできます。

2 番目の質問については、BN_num_bitsを試してください。

于 2013-08-16T05:33:25.157 に答える