Función BCryptGenRandom (bcrypt.h)
La función
Sintaxis
NTSTATUS BCryptGenRandom(
[in, out] BCRYPT_ALG_HANDLE hAlgorithm,
[in, out] PUCHAR pbBuffer,
[in] ULONG cbBuffer,
[in] ULONG dwFlags
);
Parámetros
[in, out] hAlgorithm
Identificador de un proveedor de algoritmos creado mediante la función BCryptOpenAlgorithmProvider. El algoritmo que se especificó cuando se creó el proveedor debe admitir la interfaz del generador de números aleatorios.
[in, out] pbBuffer
Dirección de un búfer que recibe el número aleatorio. El tamaño de este búfer se especifica mediante el parámetro cbBuffer.
[in] cbBuffer
Tamaño, en bytes, del búfer de pbBuffer.
[in] dwFlags
Conjunto de marcas que modifican el comportamiento de esta función. Este parámetro puede ser cero o el siguiente valor.
Valor | Significado |
---|---|
|
Esta función usará el número del búfer de pbBuffer como entropía adicional para el número aleatorio. Si no se especifica esta marca, esta función usará un número aleatorio para la entropía.
Windows 8 y versiones posteriores: Esta marca se omite en Windows 8 y versiones posteriores. |
|
Use el algoritmo de generador de números aleatorios preferido por el sistema. El parámetro BCRYPT_USE_SYSTEM_PREFERRED_RNG solo se admite en PASSIVE_LEVELIRQL. Para obtener más información, vea Comentarios. Windows Vista: Esta marca no se admite sin SP2. |
Valor devuelto
Devuelve un código de estado que indica el éxito o error de la función.
Entre los códigos de retorno posibles se incluyen, entre otros, los siguientes.
Código devuelto | Descripción |
---|---|
|
La función se realizó correctamente. |
|
El identificador del parámetro hAlgorithm no es válido. |
|
Uno o varios parámetros no son válidos. |
Observaciones
El proveedor de números aleatorios predeterminado implementa un algoritmo para generar números aleatorios que cumpla con el estándar NIST SP800-90, específicamente la parte CTR_DRBG de ese estándar.
Windows Vista: antes de Windows Vista con Service Pack 1 (SP1) el proveedor de números aleatorios predeterminado implementa un algoritmo para generar números aleatorios que cumpla con el estándar FIPS 186-2.
En función de los modos de procesador que admita un proveedor, se puede llamar a BCryptGenRandom desde el modo de usuario o el modo kernel. Los autores de llamadas en modo kernel se pueden ejecutar en PASSIVE_LEVELIRQL o DISPATCH_LEVEL IRQL. Si el nivel de IRQL actual es DISPATCH_LEVEL, el identificador proporcionado en el parámetro hAlgorithm debe haberse abierto mediante la marca BCRYPT_PROV_DISPATCH y los punteros pasados a la función BCryptGenRandom deben hacer referencia a la memoria no paginada (o bloqueada).Windows Vista: El proveedor de Microsoft no admite llamadas en DISPATCH_LEVEL.
Para llamar a esta función en modo kernel, use Cng.lib, que forma parte del Kit de desarrollo de controladores (DDK). Windows Server 2008 y Windows Vista: Para llamar a esta función en modo kernel, use Ksecdd.lib.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP] |
servidor mínimo admitido | Windows Server 2008 [aplicaciones de escritorio | Aplicaciones para UWP] |
de la plataforma de destino de |
Windows |
encabezado de |
bcrypt.h |
biblioteca de |
Bcrypt.lib o Cng.lib(Para el modo kernel) |
DLL de |
Bcrypt.dll |