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

指出要轉換之字串的格式。 這可以是下列其中一個值。

意義
CRYPT_STRING_BASE64HEADER
0x00000000
表單 '-----BEGIN ...-----' 和 '-----END ...-----' 之間的 Base64。 請參閱下方的「備註」。
CRYPT_STRING_BASE64
0x00000001
Base64,不含標頭。
CRYPT_STRING_BINARY
0x00000002
純二進位複本。
CRYPT_STRING_BASE64REQUESTHEADER
0x00000003
表單 '-----BEGIN ...-----' 和 '-----END ...-----' 之間的 Base64。 請參閱下方的「備註」。
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
表單 '-----BEGIN ...-----' 和 '-----END ...-----' 之間的 Base64。 請參閱下方的「備註」。
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中所需記憶體的大小,以位元組為單位。

[in, out] pcbBinary

在專案上, DWORD 變數的指標包含 pbBinary 緩衝區的大小,以位元組為單位。 函式傳回之後,此變數會包含複製到緩衝區的位元組數目。 如果此值不足以包含所有資料,則函式會失敗,而 GetLastError 會傳回 ERROR_MORE_DATA

如果pbBinaryNull則會忽略由 pbBinary所指向的DWORD

[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旗標:他們會嘗試剖析表單 -----BEGIN ...----------END ...----- 和 行之間 base64 編碼資料的第一個區塊。 這些 ... 部分會被忽略,而且不需要相符。 如果剖析成功,則會在pdwFlags參數指向的DWORD中傳回dwFlags參數中傳遞的值。 請注意, CRYPT_STRING_BASE64REQUESTHEADERCRYPT_STRING_BASE64X509CRLHEADER 的值並不表示找到要求標頭或 X.509憑證撤銷清單 , (CRL) 。

注意

wincrypt.h 標頭會將 CryptStringToBinary 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

   
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 wincrypt.h
程式庫 Crypt32.lib
Dll Crypt32.dll

另請參閱

CryptBinaryToString