共用方式為


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 中所需記憶體的大小,以位元組為單位,所指向的 DWORD

[in, out] pcbBinary

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

如果 pbBinary NULL,則會忽略 所指向的 D WORD。

[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_BASE64HEADERCRYPT_STRING_BASE64REQUESTHEADERCRYPT_STRING_BASE64X509CRLHEADER 旗標全都受到此函式的相同處理:它們會嘗試剖析窗體 -----BEGIN ...----------END ...-----行之間的第一個 base64 編碼數據區塊。 會忽略 ... 部分,而且不需要相符。 如果剖析成功,dwFlags 參數中傳遞的值會在 pdwFlags 參數所指向的 DWORD 傳回。 請注意,CRYPT_STRING_BASE64REQUESTHEADERCRYPT_STRING_BASE64X509CRLHEADER 的值並不表示找到要求標頭或 X.509證書吊銷清單 (CRL)。

注意

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

要求

要求 價值
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
支援的最低伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平臺 窗戶
標頭 wincrypt.h
連結庫 Crypt32.lib
DLL Crypt32.dll

另請參閱

CryptBinaryToString