...
On Windows platforms, the BcryptGenRandom()
function can be used to generate cryptographically strong random numbers. The Microsoft Developer Network BCryptGenRandom()
reference [MSDN] states:
The default random number provider implements an algorithm for generating random numbers that complies with the NIST SP800-90 standard, specifically the CTR_DRBG portion of that standard.
Code Block | ||||
---|---|---|---|---|
| ||||
#include <Windows.h>
#include <bcrypt.h>
#include <stdio.h>
#pragma comment(lib, "Bcrypt")
void func(void) {
BCRYPT_ALG_HANDLE Prov;
int Buffer;
if (!BCRYPT_SUCCESS(
BCryptOpenAlgorithmProvider(&Prov, BCRYPT_RNG_ALGORITHM,
NULL, 0))) {
/* handle error */
}
if (!BCRYPT_SUCCESS(BCryptGenRandom(Prov, (PUCHAR) (&Buffer),
sizeof(Buffer), 0))) {
/* handle error */
}
printf("Random number: %d\n", Buffer);
BCryptCloseAlgorithmProvider(Prov, 0);
} |
Risk Assessment
The use of the rand()
function can result in predictable random numbers.
...