アプリケーションに決定論的ランダム ビット ジェネレーターを使用したいと考えています。私は乱数ジェネレーター API に openssl を使用しています。現在、疑似乱数を生成するために RAND_peuso_bytes() API を使用しています。そして、RAND_add() を通じてシードを与えています。次に、ランダム ジェネレーター関数を 2 回呼び出した場合、これら 2 回の呼び出しで 2 つの異なるランダム値を取得しています。シードが同じであれば、同じ値が得られるはずですが、どこが間違っていますか?
私が書いたコードは
int nSize = 8; /* 64 bit random number is required */
int nEntropy = 5; /* 40 bit entropy required */
/* generate random nonce for making seed */
RAND_bytes(cSeed_64, nSize);
RAND_add(cSeed_64, nSize, nEntropy); /* random nonce is cSeed_64, seedin 64 bit with
* 40 bit entropy */
/* calling random byte function to generate random number function 10 times with same seed*/
int j = 10;
while( j--)
{
RAND_pseudo_bytes(cRandBytes_64, 8);
printf("generated 64 bit random number \n");
for(i = 0 ; i < nSize; i++)
printf("%x ",cRandBytes_64[i]);
printf("\n");
}