CryptBinaryToStringA 函数 (wincrypt.h)

CryptBinaryToString 函数将字节数组转换为格式化字符串。

语法

BOOL CryptBinaryToStringA(
  [in]            const BYTE *pbBinary,
  [in]            DWORD      cbBinary,
  [in]            DWORD      dwFlags,
  [out, optional] LPSTR      pszString,
  [in, out]       DWORD      *pcchString
);

参数

[in] pbBinary

指向要转换为字符串的字节数组的指针。

[in] cbBinary

pbBinary 数组中的元素数。

[in] dwFlags

指定生成的格式化字符串的格式。 此参数的取值可为下列值之一:

含义
CRYPT_STRING_BASE64HEADER
0x00000000
Base64,具有证书开头和结束标头。
CRYPT_STRING_BASE64
0x00000001
Base64,不带标头。
CRYPT_STRING_BINARY
0x00000002
纯二进制副本。
CRYPT_STRING_BASE64REQUESTHEADER
0x00000003
Base64,具有请求开头和结束标头。
CRYPT_STRING_HEX
0x00000004
仅十六进制。
CRYPT_STRING_HEXASCII
0x00000005
十六进制,显示 ASCII 字符。
CRYPT_STRING_BASE64X509CRLHEADER
0x00000009
Base64,带有 X.509 CRL 开头和结束标头。
CRYPT_STRING_HEXADDR
0x0000000a
十六进制,显示地址。
CRYPT_STRING_HEXASCIIADDR
0x0000000b
十六进制,显示 ASCII 字符和地址。
CRYPT_STRING_HEXRAW
0x0000000c
原始十六进制字符串。

Windows Server 2003 和 Windows XP: 不支持此值。

CRYPT_STRING_STRICT
0x20000000
强制严格解码 ASN.1 文本格式。 某些 ASN.1 二进制 BLOB 可能会错误地将 BLOB 的前几个字节解释为 Base64 文本。 在这种情况下,将忽略其余文本。 使用此标志强制执行 BLOB 的完整解码。

Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此值。

 

除了上述值之外,还可以指定以下一个或多个值来修改函数的行为。

含义
CRYPT_STRING_NOCRLF
0x40000000
不要将任何新行字符追加到编码的字符串中。 默认行为是使用回车/换行 (CR/LF) 对 (0x0D/0x0A) 来表示新行。

Windows Server 2003 和 Windows XP: 不支持此值。

CRYPT_STRING_NOCR
0x80000000
仅对新行使用换行 (LF) 字符 (0x0A) 。 默认行为是使用 CR/LF 对 (0x0D/0x0A) 来表示新行。

[out, optional] pszString

指向接收转换字符串的缓冲区的指针。 若要计算必须分配以保存返回的字符串的字符数,请将此参数设置为 NULL。 函数会将所需数量的字符(包括终止 NULL 字符)放在 pcchString 指向的值中。

[in, out] pcchString

指向 DWORD 变量的指针,该变量包含 pszString 缓冲区的大小(以 TCHAR为单位)。 如果 pszStringNULL,则函数计算返回字符串的长度, (包括 TCHARs 中的终止 null 字符) ,并在此参数中返回它。 如果 pszString 不为 NULL 且不够大,则该函数会将二进制数据转换为指定的字符串格式(包括终止 null 字符),但 pcchString 接收 TCHARs 的长度,不包括终止 null 字符。

返回值

如果函数成功,则函数) 返回非零 (TRUE

如果函数失败,则返回零 (FALSE) 。

注解

除了使用 CRYPT_STRING_BINARY 编码外,所有字符串都追加了新的行序列。 默认情况下,新行序列是 CR/LF 对 (0x0D/0x0A) 。 如果 dwFlags 参数包含 CRYPT_STRING_NOCR 标志,则新行序列是 LF 字符 (0x0A) 。 如果 dwFlags 参数包含 CRYPT_STRING_NOCRLF 标志,则不会向字符串追加新的行序列。

注意

wincrypt.h 标头将 CryptBinaryToString 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 wincrypt.h
Library Crypt32.lib
DLL Crypt32.dll

另请参阅

CryptStringToBinary