CryptGenRandom

【勇芳软件工作室】汉化HomePreviousNext

[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功能中的“示例”部分。

也可以看看

CryptAcquireContext, CryptGenRandom, CryptSetKeyParam