CryptGenRandom实现代码
以下是一个使用CryptGenRandom函数生成随机数的示例代码:
#include <Windows.h>
#include <iostream>
int main()
{
HCRYPTPROV hProv = NULL; // 加密服务提供程序句柄
BYTE randomBytes[16] = { 0 }; // 16字节随机数缓冲区
// 获取默认的加密服务提供程序
if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
{
std::cerr << "CryptAcquireContext failed with error " << GetLastError() << std::endl;
return 1;
}
// 生成16字节随机数
if (!CryptGenRandom(hProv, sizeof(randomBytes), randomBytes))
{
std::cerr << "CryptGenRandom failed with error " << GetLastError() << std::endl;
CryptReleaseContext(hProv, 0);
return 1;
}
// 输出随机数
std::cout << "Random bytes: ";
for (int i = 0; i < sizeof(randomBytes); i++)
{
std::printf("%02X", randomBytes[i]);
}
std::cout << std::endl;
CryptReleaseContext(hProv, 0); // 释放加密服务提供程序句柄
return 0;
}
该代码使用CryptAcquireContext函数获取默认的加密服务提供程序句柄,并使用CryptGenRandom函数生成16字节随机数。最后,输出生成的随机数,并释放加密服务提供程序句柄
原文地址: https://www.cveoy.top/t/topic/clhn 著作权归作者所有。请勿转载和采集!