#include <wincrypt.h>
class RealRandomizer
{
public:
RealRandomizer()
{
if (!CryptAcquireContextW(&_hProv, NULL, NULL, PROV_RSA_FULL, 0)) {
throw 1;
}
}
~RealRandomizer()
{
if (_hProv != NULL) {
CryptReleaseContext(_hProv, 0);
}
}
template<typename T>
T Generate()
{
T Data;
if (!CryptGenRandom(_hProv, sizeof(T), (BYTE*)&Data)) {
throw 1;
}
return Data;
}
private:
HCRYPTPROV _hProv = NULL;
};
更多推荐
C++ Windows 真随机数生成器
发布评论