我正在使用 openssl 随机数生成器 API 编写一个随机数生成器。我正在为随机数生成器提供种子。种子是使用openSSL的api提供给openssl的RAND_seed()
,在给出种子之后我调用Rand_bytes()
api来获取随机数。
但问题是,如果种子相同,Rand_bytes 应该给我相同的随机数,但在我的情况下,我没有得到相同的随机数。这种行为的原因是什么?解决办法是什么 ?代码如下
#define _64BIT_SIZE 8
int GenerateRandom_64(unsigned char * apcRandom_64)
{
unsigned char cRandBytes_64[_64BIT_SIZE] = {0},
cSeed_64[_64BIT_SIZE] =
{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
RAND_seed(cSeed_64, _64BIT_SIZE); /* seed is cSeed_64 */
if(!RAND_bytes(apcRandom_64, _64BIT_SIZE))
printf("nOt seeded the random bit generator properly\n");
return 0;
}