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 被视为以 null 结尾的字符串。
[in] dwFlags
指示要转换的字符串的格式。 这可以是以下值之一。
值 | 含义 |
---|---|
|
“-----BEGIN ...-----”和“-----END ...-----”的行之间的 Base64。 请参阅下面的备注。 |
|
Base64,不带标头。 |
|
纯二进制副本。 |
|
“-----BEGIN ...-----”和“-----END ...-----”的行之间的 Base64。 请参阅下面的备注。 |
|
仅十六进制格式。 |
|
带有 ASCII 字符显示的十六进制格式。 |
|
按顺序尝试以下操作:
|
|
按顺序尝试以下操作:
|
|
按顺序尝试以下操作:
|
|
“-----BEGIN ...-----”和“-----END ...-----”的行之间的 Base64。 请参阅下面的备注。 |
|
十六进制,显示地址。 |
|
十六进制,显示 ASCII 字符和地址。 |
|
原始十六进制字符串。
Windows Server 2003 和 Windows XP: 不支持此值。 |
|
为 Base64 数据设置此标志,以指定二进制数据的末尾仅包含空格,并且最多包含三个等于“=”符号。
Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此值。 |
[in] pbBinary
指向接收返回的字节序列的缓冲区的指针。 如果此参数为 NULL,则该函数将计算所需缓冲区的长度,并返回以字节为单位的 DWORD 所指向 的 DWORD 内存的大小(以字节为单位)。
[in, out] pcbBinary
指向 DWORD 变量的指针,该变量在输入时包含 pbBinary 缓冲区的大小(以字节为单位)。 函数返回后,此变量包含复制到缓冲区的字节数。 如果此值不足以包含所有数据,则函数将失败, GetLastError 将返回 ERROR_MORE_DATA。
如果 pbBinary 为 NULL,则忽略由 pbBinary 指向的 DWORD。
[out] pdwSkip
指向 DWORD 值的指针,该值接收跳过到标头开头的 -----BEGIN ...-----
字符数。
如果没有标头,则 DWORD 设置为零。
此参数是可选的,如果不需要此参数,可为 NULL 。
[out] pdwFlags
指向接收转换中实际使用的标志的 DWORD 值的指针。 这些标志与 用于 dwFlags 参数的标志相同。 在许多情况下,这些标志与 在 dwFlags 参数中传递的标志相同。 如果 dwFlags 包含以下标志之一,则此值将收到指示字符串的实际格式的标志。 此参数是可选的,如果不需要此参数,可为 NULL 。
返回值
如果函数成功,则返回值为非零 (TRUE) 。
如果函数失败,则返回值为零, (FALSE) 。
注解
此函数对 CRYPT_STRING_BASE64HEADER、 CRYPT_STRING_BASE64REQUESTHEADER和 CRYPT_STRING_BASE64X509CRLHEADER 标志的处理方式相同:它们尝试分析表单 -----BEGIN ...-----
行与 -----END ...-----
之间的第一个 base64 编码数据块。
这些 ...
部分将被忽略,它们不需要匹配。
如果分析成功,则会在 pdwFlags 参数指向的 DWORD 中返回 dwFlags 参数中传递的值。
请注意,值 CRYPT_STRING_BASE64REQUESTHEADER 或 CRYPT_STRING_BASE64X509CRLHEADER 并不意味着找到请求标头或 X.509证书吊销列表 (CRL) 。
注意
wincrypt.h 标头将 CryptStringToBinary 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |