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: 不支持此值。

 

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

Value 含义
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

指向包含 pszString 缓冲区大小(以 TCHARs 为单位)的 DWORD 变量的指针。 如果 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