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_BASE64URI
0x0000000d
Base64(不含标头)替换为“-”和“/”,由 RFC 4648 第 5 节中定义的“_”替换。
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 缓冲区 TCHARs 的大小。 如果 pszStringNULL,则该函数将计算 TCHARs 中返回字符串(包括终止 null 字符)的长度,并在此参数中返回它。 如果 pszStringNULL 且足够大,则该函数会将二进制数据转换为包含终止 null 字符的指定字符串格式,但 pcchString 接收 tCHAR长度,不包括终止 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 应用]
目标平台 窗户
标头 wincrypt.h
Crypt32.lib
DLL Crypt32.dll

另请参阅

CryptStringToBinary