Функция BCryptGenRandom (bcrypt.h)
Функция BCryptGenRandom создает случайное число.
Синтаксис
NTSTATUS BCryptGenRandom(
[in, out] BCRYPT_ALG_HANDLE hAlgorithm,
[in, out] PUCHAR pbBuffer,
[in] ULONG cbBuffer,
[in] ULONG dwFlags
);
Параметры
[in, out] hAlgorithm
Дескриптор поставщика алгоритмов, созданный с помощью функции BCryptOpenAlgorithmProvider. Алгоритм, указанный при создании поставщика, должен поддерживать интерфейс генератора случайных чисел.
[in, out] pbBuffer
Адрес буфера, получающего случайное число. Размер этого буфера задается параметром cbBuffer.
[in] cbBuffer
Размер в байтах буфера pbBuffer.
[in] dwFlags
Набор флагов, изменяющих поведение этой функции. Этот параметр может быть равен нулю или следующему значению.
Ценность | Значение |
---|---|
|
Эта функция будет использовать число в буфере pbBuffer в качестве дополнительной энтропии для случайного числа. Если этот флаг не указан, эта функция будет использовать случайное число для энтропии.
Windows 8 и более поздних версий: этот флаг игнорируется в Windows 8 и более поздних версиях. |
|
Используйте алгоритм генератора случайных чисел, предпочитаемый системой. Параметр BCRYPT_USE_SYSTEM_PREFERRED_RNG поддерживается только в PASSIVE_LEVELIRQL. Дополнительные сведения см. в разделе "Примечания". Windows Vista: этот флаг не поддерживается без пакета обновления 2 (SP2). |
Возвращаемое значение
Возвращает код состояния, указывающий на успешность или сбой функции.
Возможные коды возврата включают в себя, но не ограничиваются следующими.
Возвращаемый код | Описание |
---|---|
|
Функция была успешной. |
|
Дескриптор в параметре hAlgorithm |
|
Один или несколько параметров недопустимы. |
Замечания
Поставщик случайных чисел по умолчанию реализует алгоритм для создания случайных чисел, которые соответствуют стандарту NIST SP800-90, в частности, CTR_DRBG части этого стандарта.
Windows Vista: до Windows Vista с пакетом обновления 1 (SP1) поставщик случайных чисел по умолчанию реализует алгоритм создания случайных чисел, которые соответствуют стандарту FIPS 186-2.
В зависимости от того, какие режимы процессора поддерживает поставщик, BCryptGenRandom можно вызывать из пользовательского режима или режима ядра. Вызывающие серверы режима ядра могут выполняться в PASSIVE_LEVELIRQL или DISPATCH_LEVEL IRQL. Если текущий уровень IRQL
Чтобы вызвать эту функцию в режиме ядра, используйте Cng.lib, которая входит в состав пакета средств разработки драйверов (DDK). Windows Server 2008 и Windows Vista: для вызова этой функции в режиме ядра используйте Ksecdd.lib.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista [классические приложения | Приложения UWP] |
минимальный поддерживаемый сервер | Windows Server 2008 [классические приложения | Приложения UWP] |
целевая платформа | Виндоус |
заголовка | bcrypt.h |
библиотеки |
Bcrypt.lib или Cng.lib(для режима ядра) |
DLL | Bcrypt.dll |