0
我在寫使用OpenSSL的隨機數生成器API的一個隨機數發生器。我正在給隨機數發生器提供種子。種子是使用RAND_seed()
API的OpenSSL,並給予種子後,我打電話Rand_bytes()
API來獲取隨機數提供給OpenSSL的。即使提供的種子是相同的,爲什麼openssl會給出不同的隨機數?
但問題是,如果種子是一樣的,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;
}
爲了安全起見... – 2013-10-29 10:55:38