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 库。但这些随机数不够安全,不适合用于加密等安全场景。

C++ BCryptGenRandom: 高安全随机数生成

原文地址: https://www.cveoy.top/t/topic/nuiW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录