C++ BCryptGenRandom: 高安全随机数生成
BCryptGenRandom 是 Windows API 中的一个函数,用于生成安全的随机数。以下是使用 C++ 调用 BCryptGenRandom 函数生成随机数的示例代码:
#include <windows.h>
#include <bcrypt.h>
#include <iostream>
#include <vector>
int main()
{
// 打开密钥服务提供程序
BCRYPT_ALG_HANDLE hProvider;
if (BCryptOpenAlgorithmProvider(&hProvider, BCRYPT_RNG_ALGORITHM, nullptr, 0) != STATUS_SUCCESS) {
std::cerr << "Failed to open RNG algorithm provider." << std::endl;
return 1;
}
// 生成随机数
std::vector<uint8_t> buffer(32); // 生成 32 字节的随机数
if (BCryptGenRandom(hProvider, buffer.data(), buffer.size(), 0) != STATUS_SUCCESS) {
std::cerr << "Failed to generate random numbers." << std::endl;
BCryptCloseAlgorithmProvider(hProvider, 0);
return 1;
}
// 输出随机数
std::cout << "Random numbers: ";
for (auto b : buffer) {
std::cout << std::hex << static_cast<int>(b);
}
std::cout << std::endl;
// 关闭密钥服务提供程序
BCryptCloseAlgorithmProvider(hProvider, 0);
return 0;
}
注意,使用 BCryptGenRandom 生成的随机数具有较高的安全性,但生成速度较慢。如果需要更快的随机数生成,可以使用 rand() 或 C++ 11 中的 random 库。但这些随机数不够安全,不适合用于加密等安全场景。
原文地址: https://www.cveoy.top/t/topic/nuiW 著作权归作者所有。请勿转载和采集!