C++ Windows 真随机数生成器

#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;

};

猜你喜欢

转载自blog.csdn.net/u012088909/article/details/105132723