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


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

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

Синтаксис

BOOL CryptStringToBinaryW(
  [in]      LPCWSTR 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 считается строкой, завершаемой значением NULL.

[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 , содержащую размер в байтах буфера. После возврата функции эта переменная содержит количество байтов, скопированных в буфер. Если это значение недостаточно велико, чтобы содержать все данные, функция завершается ошибкой и GetLastError возвращает ERROR_MORE_DATA.

Если pbBinaryNULL, 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 dwFlags, возвращается в DWORD, на который указывает параметр pdwFlags. Обратите внимание, что значение CRYPT_STRING_BASE64REQUESTHEADER или CRYPT_STRING_BASE64X509CRLHEADER не означает, что был найден заголовок запроса или список отзыва сертификатов X.509 (CRL).

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2003 [классические приложения | Приложения UWP]
целевая платформа Виндоус
заголовка wincrypt.h
библиотеки Crypt32.lib
DLL Crypt32.dll

См. также

CryptBinaryToString