openssl乱数ジェネレーターAPIを使用して乱数ジェネレーターを作成していました。乱数ジェネレーターにシードを提供しています。RAND_seed()
シードはopenSSLのAPIを使用してopensslに提供され、シードを提供した後、 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;
}