我想为我的应用程序使用确定性随机位生成器。我正在将 openssl 用于随机数生成器 api。目前我正在使用 RAND_pseuso_bytes() api 来生成伪随机数。我正在通过 RAND_add() 提供种子。然后,如果我两次调用 Random 生成器函数,我会在这两次调用中得到两个不同的随机值。如果种子相同,那么它应该给我相同的值,我哪里出错了?
我写的代码是
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");
}