[New - Windows NT]
[New - Windows 95, OEM Service Release 2]
CryptGenRandom函数用随机字节填充缓冲区。
BOOL CRYPTFUNC CryptGenRandom(
HCRYPTPROV【pbBuffer】, | |
DWORD【This function is often used to generate random initialization vectors and salt values.】, | |
BYTE *【此函数通常用于生成随机初始化向量和盐值。】 | |
); |
参数
【pbBuffer】
[in]应用程序的CSP的句柄。应用程序使用CryptAcquireContext函数获取此句柄。
【This function is often used to generate random initialization vectors and salt values.】
[in]要生成的随机数据的字节数。
【此函数通常用于生成随机初始化向量和盐值。】
[in/out]该函数用于将随机数据复制到的缓冲区。此缓冲区长度必须至少为【This function is often used to generate random initialization vectors and salt values.】个字节。
可选地,应用程序可以填充该缓冲区以将其用作辅助随机种子。这在“备注”部分进一步解释。
备注
该函数产生的数据是“密码随机的”。它比典型的随机数生成器(如“C”编译器附带的数据)生成的数据更为随机。
此函数通常用于生成随机初始化向量和盐值。
播种随机数发生器
所有软件随机数发生器的工作方式基本相同。它们从一个真正的随机数开始,称为“种子”,然后使用算法根据它生成一个伪随机的比特序列。这个过程最困难的部分是获得一个真正随机的种子。这通常基于用户输入延迟或来自一个或多个硬件组件的抖动。
如果您的应用程序可以访问好的随机源,则可以在调用CryptGenRandom之前填写【此函数通常用于生成随机初始化向量和盐值。】缓冲区中的一些随机数据。然后,CSP将使用这些数据进一步随机分配其内部种子。在调用CryptGenRandom之前未能初始化【此函数通常用于生成随机初始化向量和盐值。】缓冲区是可以接受的。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要检索扩展错误信息,请使用GetLastError功能。
下表列出了GetLastError函数最常返回的错误代码。由“NTE”开头的错误代码由您使用的特定CSP生成。
错误 | 描述 |
ERROR_INVALID_HANDLE | 其中一个参数指定一个无效句柄。 |
ERROR_INVALID_PARAMETER | 其中一个参数包含无效值。这通常是一个非法的指针。 |
NTE_BAD_UID | 【pbBuffer】参数不包含有效的上下文句柄。 |
NTE_FAIL | 该函数以某种意想不到的方式失败。 |
例
请参阅CryptSetKeyParam功能中的“示例”部分。
也可以看看