Функция NCryptEncrypt (ncrypt.h)
Функция NCryptEncrypt шифрует блок данных.
Синтаксис
SECURITY_STATUS NCryptEncrypt(
[in] NCRYPT_KEY_HANDLE hKey,
[in] PBYTE pbInput,
[in] DWORD cbInput,
[in, optional] VOID *pPaddingInfo,
[out] PBYTE pbOutput,
[in] DWORD cbOutput,
[out] DWORD *pcbResult,
[in] DWORD dwFlags
);
Параметры
[in] hKey
Дескриптор ключа, используемого для шифрования данных.
[in] pbInput
Адрес буфера, содержащего данные для шифрования. Параметр cbInput содержит размер данных для шифрования. Дополнительные сведения см. в подразделе "Примечания".
[in] cbInput
Число байтов в буфере pbInput для шифрования.
[in, optional] pPaddingInfo
Указатель на структуру, содержащую сведения о заполнении. Фактический тип структуры, на который указывает этот параметр, зависит от значения параметра dwFlags . Этот параметр используется только с асимметричными ключами и в противном случае должен иметь значение NULL .
[out] pbOutput
Адрес буфера, который будет получать зашифрованные данные, созданные этой функцией. Параметр cbOutput содержит размер этого буфера. Дополнительные сведения см. в подразделе "Примечания".
Если этот параметр имеет значение NULL, эта функция вычислит размер, необходимый для зашифрованных данных, и вернет размер в расположении, на который указывает параметр pcbResult .
[in] cbOutput
Размер буфера pbOutput (в байтах). Этот параметр игнорируется, если параметр pbOutput имеет значение NULL.
[out] pcbResult
Указатель на переменную DWORD , которая получает количество байтов, скопированных в буфер pbOutput . Если pbOutput имеет значение NULL, он получает размер в байтах, необходимый для зашифрованного текста.
[in] dwFlags
Флаги, изменяющие поведение функции. Допустимый набор флагов зависит от типа ключа, указанного параметром hKey .
Если ключ является асимметричным, это может быть одно из следующих значений.
Значение | Значение |
---|---|
|
Не используйте заполнение. Параметр pPaddingInfo не используется.
Если указать NCRYPT_NO_PADDING_FLAG, функция NCryptEncrypt шифрует только первые N битов, где N — это длина ключа, переданного в качестве параметра hKey . Все биты после первых N битов игнорируются. |
|
Используйте схему Оптимальное заполнение асимметричного шифрования (OAEP). Параметр pPaddingInfo является указателем на структуру BCRYPT_OAEP_PADDING_INFO . |
|
Данные будут заполнены случайным числом для округления размера блока. Параметр pPaddingInfo не используется. |
|
Запрашивает, чтобы поставщик служб ключей (KSP) не отображал пользовательский интерфейс. Если поставщик должен отображать пользовательский интерфейс для работы, вызов завершается сбоем, а KSP должен задать код ошибки NTE_SILENT_CONTEXT как последнюю ошибку. |
Возвращаемое значение
Возвращает код состояния, указывающий на успешное или неудачное выполнение функции.
Возможные коды возврата включают, помимо прочего, следующие.
Код возврата | Описание |
---|---|
|
Функция выполнена успешно. |
|
Параметр dwFlags содержит недопустимое значение. |
|
Ключ, определенный параметром hKey , не был завершен или является неполным. |
|
Размер, заданный параметром cbOutput , недостаточно велик для хранения зашифрованных данных. |
|
Недопустимый параметр hKey . |
|
Один или несколько параметров недопустимы. |
Комментарии
Параметры pbInput и pbOutput могут указывать на один и тот же буфер. В этом случае эта функция выполняет шифрование на месте. Возможно, размер зашифрованных данных будет больше, чем размер незашифрованных данных, поэтому буфер должен быть достаточно большим для хранения зашифрованных данных.
Служба не должна вызывать эту функцию из функции StartService. Если служба вызывает эту функцию из функции StartService, может возникнуть взаимоблокировка, и служба может перестать отвечать.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | ncrypt.h |
Библиотека | Ncrypt.lib |
DLL | Ncrypt.dll |