Administrator
Administrator
发布于 2026-04-30 / 1 阅读
0
0

Windows API - 加密级安全随机数生成器(CSPRNG)

BCryptGenRandom 是 Windows CNG(Cryptography Next Generation) 提供的加密级安全随机数生成器(CSPRNG)接口。

  • 随机源:内核熵池(多源熵:系统事件、硬件噪声等)

  • 适用:密钥、IV、nonce、token、盐值等

  • 安全级别:✔ 可用于生产加密

比起需要种子的随机数和JS中的Math.random更安全

NTSTATUS BCryptGenRandom(
  BCRYPT_ALG_HANDLE hAlgorithm,
  PUCHAR            pbBuffer,
  ULONG             cbBuffer,
  ULONG             dwFlags
);

调用:

BCryptGenRandom(0, 缓冲区指针, 缓冲区大小, 2)

例如JS的:

CryptoJS.lib.WordArray.random(256)
//得出:
//[1332124746,301907461,1463382996,1291417688,2541656835,268747997,2411741889,3739882966,3603524533,1076162732,1469872587,3137035406,1967022062,2405437198,2108531528,2682240310,625635432,2663668092,2174281980,443315450,847483172,919776591,4143817022,845629561,705756667,973115487,2597980633,4073888389,29509610,1105570181,228387295,2397917386,633282946,2502962725,3965880018,3410264731,679079821,2495654629,3248048507,3928642262,3237490343,2566604474,2211861274,2122016881,1976840580,1333027213,3371186991,4027893174,3760706731,1755780567,773357322,2665479007,1225681638,2410890292,2138301678,4130270978,3906939849,3060021973,2549497452,943072474,1871728415,3851341447,3001707440,2214945175]
//64个int32,生成64个[4]byte转成int32就可以


评论