난 openssl 난수 생성기 API를 사용하여 난수 생성기를 쓰고 있었다. 난수 생성기에 시드를 제공하고 있습니다. 씨앗은 openSSL의 RAND_seed()
API를 사용하여 openssl에 제공되고 시드를 부여한 후 Rand_bytes()
api를 호출하여 임의의 번호를 가져옵니다.제공되는 시드가 동일해도 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;
}
보안상의 이유로 ... –