C++에서 난수를 발생시키는 방법이 몇가지 있다.
1. standard c 의 srand, rand를 사용
2. OpenSSL을 사용
3. stdard c++ 의 random을 사용
위 세가지 방법의 예제는 다음과 같다.
1. srand와 rand 를 사용
if (type == STDLIB) srand(time(NULL)); value = rand();
2. OpenSSL을 사용
if (type == OPENSSL) RAND_status(); RAND_bytes((unsigned char *)&value, 4);
3. c++ random 을 사용
std::mt19937 engine(seed); std::uniform_int_distribution<> dis(m_min, m_max); // default MIN=0, MAX=2147483647 value = dis(engine);
좀더 많은 종류의 랜덤함수와 전체 코드를 보려면 GitHub를 참고하자.
완벽하지는 않으나 힌트를 얻기에는 충분할 것이다.
https://github.com/tebeknet/TestOpenSSL/blob/master/TestOpenSSL/CMyRand.cpp
실행된 화면은 다음과 같다.
'Tech' 카테고리의 다른 글
[OpenSSL] EVP 방식으로 OpenSSL 사용하기 1/2 (0) | 2018.08.09 |
---|---|
PKCS#5 패딩과 PKCS#7 패딩의 차이점 (0) | 2018.08.06 |
[OpenSSL] AES 암호화 복호화 (0) | 2018.08.05 |
[OpenSSL] 인증서 생성과 GitHub 업로드 (0) | 2018.08.03 |
[OpenSSL] ECDSA Sign 과 Verify (0) | 2018.08.02 |