Поделиться через


Функция CryptStringToBinaryA (wincrypt.h)

Функция CryptStringToBinary преобразует форматированную строку в массив байтов.

Синтаксис

BOOL CryptStringToBinaryA(
  [in]      LPCSTR pszString,
  [in]      DWORD  cchString,
  [in]      DWORD  dwFlags,
  [in]      BYTE   *pbBinary,
  [in, out] DWORD  *pcbBinary,
  [out]     DWORD  *pdwSkip,
  [out]     DWORD  *pdwFlags
);

Параметры

[in] pszString

Указатель на строку, содержащую форматированную строку для преобразования.

[in] cchString

Число символов преобразуемой отформатируемой строки, не включая завершающий символ NULL . Если этот параметр равен нулю, pszString считается строкой, завершающейся нулевым значением.

[in] dwFlags

Указывает формат преобразуемой строки. Это может быть одно из следующих значений.

Значение Значение
CRYPT_STRING_BASE64HEADER
0x00000000
Base64 между строками формы "-----BEGIN ...-----" и "-----END ...-----". См. примечания ниже.
CRYPT_STRING_BASE64
0x00000001
Base64, без заголовков.
CRYPT_STRING_BINARY
0x00000002
Чистое двоичное копирование.
CRYPT_STRING_BASE64REQUESTHEADER
0x00000003
Base64 между строками формы "-----BEGIN ...-----" и "-----END ...-----". См. примечания ниже.
CRYPT_STRING_HEX
0x00000004
Только шестнадцатеричный формат.
CRYPT_STRING_HEXASCII
0x00000005
Шестнадцатеричный формат с отображением символов ASCII .
CRYPT_STRING_BASE64_ANY
0x00000006
Пытается выполнить следующие действия по порядку:
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_ANY
0x00000007
Пытается выполнить следующие действия по порядку:
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_BINARY
CRYPT_STRING_HEX_ANY
0x00000008
Пытается выполнить следующие действия по порядку:
CRYPT_STRING_HEXADDR
CRYPT_STRING_HEXASCIIADDR
CRYPT_STRING_HEX
CRYPT_STRING_HEXRAW
CRYPT_STRING_HEXASCII
CRYPT_STRING_BASE64X509CRLHEADER
0x00000009
Base64 между строками формы "-----BEGIN ...-----" и "-----END ...-----". См. примечания ниже.
CRYPT_STRING_HEXADDR
0x0000000a
Шестнадцатеричный, с отображением адреса.
CRYPT_STRING_HEXASCIIADDR
0x0000000b
Шестнадцатеричный код с символом и адресом ASCII.
CRYPT_STRING_HEXRAW
0x0000000c
Необработанная шестнадцатеричная строка.

Windows Server 2003 и Windows XP: Это значение не поддерживается.

CRYPT_STRING_STRICT
0x20000000
Установите этот флаг для данных Base64, чтобы указать, что конец двоичных данных содержит только пробелы и не более трех равно знаку "=".

Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается.

[in] pbBinary

Указатель на буфер, который получает возвращаемую последовательность байтов. Если этот параметр имеет значение NULL, функция вычисляет необходимую длину буфера и возвращает размер необходимой памяти в байтах в DWORD , на который указывает pcbBinary.

[in, out] pcbBinary

Указатель на переменную DWORD , которая при входе содержит размер буфера pbBinary в байтах. После возврата функции эта переменная содержит количество байтов, скопированных в буфер. Если это значение недостаточно велико, чтобы содержать все данные, функция завершается ошибкой и GetLastError возвращает ERROR_MORE_DATA.

Если pbBinary имеет значение NULL, параметр DWORD , на который указывает pcbBinary , игнорируется.

[out] pdwSkip

Указатель на значение DWORD , которое получает количество пропущенных символов для достижения начала заголовка -----BEGIN ...----- . Если заголовок отсутствует, параметрУ DWORD присваивается нулевое значение. Этот параметр является необязательным и может иметь значение NULL , если он не требуется.

[out] pdwFlags

Указатель на значение DWORD , которое получает флаги, фактически используемые при преобразовании. Это те же флаги, которые используются для параметра dwFlags . Во многих случаях это будут те же флаги, которые были переданы в параметре dwFlags . Если dwFlags содержит один из следующих флагов, это значение получит флаг, указывающий фактический формат строки. Этот параметр является необязательным и может иметь значение NULL , если он не требуется.

Значение Значение
CRYPT_STRING_ANY
Эта переменная получит одно из следующих значений. Каждое значение указывает фактический формат строки.
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_BINARY
CRYPT_STRING_BASE64_ANY
Эта переменная получит одно из следующих значений. Каждое значение указывает фактический формат строки.
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_HEX_ANY
Эта переменная получит одно из следующих значений. Каждое значение указывает фактический формат строки.
CRYPT_STRING_HEXADDR
CRYPT_STRING_HEXASCIIADDR
CRYPT_STRING_HEX
CRYPT_STRING_HEXRAW
CRYPT_STRING_HEXASCII

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение не равно нулю (TRUE).

Если функция завершается ошибкой, возвращаемое значение равно нулю (FALSE).

Комментарии

Флаги CRYPT_STRING_BASE64HEADER, CRYPT_STRING_BASE64REQUESTHEADER и CRYPT_STRING_BASE64X509CRLHEADER обрабатываются этой функцией одинаково: они пытаются проанализировать первый блок данных в кодировке Base64 между строками формы -----BEGIN ...----- и -----END ...-----. Части ... игнорируются, и они не должны совпадать. Если синтаксический анализ выполнен успешно, значение, переданное в параметре dwFlags , возвращается в параметре DWORD , на который указывает параметр pdwFlags . Обратите внимание, что значение CRYPT_STRING_BASE64REQUESTHEADER или CRYPT_STRING_BASE64X509CRLHEADER не означает, что был найден заголовок запроса или список отзыва сертификатовX.509 (CRL).

Примечание

Заголовок wincrypt.h определяет CryptStringToBinary в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

См. также раздел

CryptBinaryToString