Bagikan melalui


Fungsi BCryptKeyDerivation (bcrypt.h)

Fungsi BCryptKeyDerivation memperoleh kunci tanpa memerlukan perjanjian rahasia. Ini mirip dalam fungsionalitas dengan BCryptDeriveKey tetapi tidak memerlukan nilai BCRYPT_SECRET_HANDLE sebagai input.

Sintaks

NTSTATUS BCryptKeyDerivation(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] BCryptBufferDesc  *pParameterList,
  [out]          PUCHAR            pbDerivedKey,
  [in]           ULONG             cbDerivedKey,
  [out]          ULONG             *pcbResult,
  [in]           ULONG             dwFlags
);

Parameter

[in] hKey

Handel kunci input.

[in, optional] pParameterList

Penunjuk ke struktur BCryptBufferDesc yang berisi parameter KDF. Parameter ini bersifat opsional dan dapat berupa NULL jika tidak diperlukan. Parameter dapat spesifik untuk fungsi derivasi kunci (KDF) atau generik. Tabel berikut menunjukkan parameter yang diperlukan dan opsional untuk KDF tertentu yang diterapkan oleh penyedia Microsoft Primitif.

KDF Parameter Diperlukan
SP800-108 HMAC dalam mode penghitung KDF_LABEL ya
KDF_CONTEXT ya
KDF_HASH_ALGORITHM ya
SP800-56A KDF_ALGORITHMID ya
KDF_PARTYUINFO ya
KDF_PARTYVINFO ya
KDF_HASH_ALGORITHM ya
KDF_SUPPPUBINFO tidak
KDF_SUPPPRIVINFO tidak
PBKDF2 KDF_HASH_ALGORITHM ya
KDF_SALT ya
KDF_ITERATION_COUNT tidak
CAPI_KDF KDF_HASH_ALGORITHM ya
 

Parameter generik berikut dapat digunakan:

  • KDF_GENERIC_PARAMETER
Parameter generik memetakan ke parameter spesifik KDF dengan cara berikut:

SP800-108 HMAC dalam mode penghitung:

  • KDF_GENERIC_PARAMETER = KDF_LABEL||0x00||KDF_CONTEXT

SP800-56A

  • KDF_GENERIC_PARAMETER = KDF_ALGORITHMID || KDF_PARTYUINFO || KDF_PARTYVINFO {|| KDF_SUPPPUBINFO } {|| KDF_SUPPPRIVINFO }

PBKDF2

  • KDF_GENERIC_PARAMETER = KDF_SALT
  • KDF_ITERATION_COUNT – default ke 10000

CAPI_KDF

  • KDF_GENERIC_PARAMETER = Tidak Digunakan

[out] pbDerivedKey

Alamat buffer yang menerima kunci. Parameter cbDerivedKey berisi ukuran buffer ini.

[in] cbDerivedKey

Ukuran, dalam byte, dari buffer yang ditunjukkan oleh parameter pbDerivedKey .

[out] pcbResult

Penunjuk ke variabel yang menerima jumlah byte yang disalin ke buffer yang ditunjukkan oleh parameter pbDerivedKey .

[in] dwFlags

Bendera yang mengubah perilaku fungsi ini. Nilai berikut dapat digunakan dengan penyedia Microsoft Primitif.

Nilai Makna
BCRYPT_CAPI_AES_FLAG
Menentukan bahwa algoritma target adalah AES dan oleh karena itu kunci harus diperluas dua kali lipat. Bendera ini hanya valid dengan algoritma CAPI_KDF.

Mengembalikan nilai

Mengembalikan kode status yang menunjukkan keberhasilan atau kegagalan fungsi.

Keterangan

Anda dapat menggunakan pengidentifikasi algoritma berikut dalam fungsi BCryptOpenAlgorithmProvider sebelum memanggil BCryptKeyDerivation:

  • BCRYPT_CAPI_KDF_ALGORITHM
  • BCRYPT_SP800108_CTR_HMAC_ALGORITHM
  • BCRYPT_SP80056A_CONCAT_ALGORITHM
  • BCRYPT_PBKDF2_ALGORITHM
Untuk memanggil fungsi ini dalam mode kernel, gunakan Cng.lib, yang merupakan bagian dari Driver Development Kit (DDK). Windows Server 2008 dan Windows Vista: Untuk memanggil fungsi ini dalam mode kernel, gunakan Ksecdd.lib.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8 [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2012 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header bcrypt.h
Pustaka Bcrypt.lib
DLL Bcrypt.dll

Lihat juga

BCryptDeriveKey

NCryptKeyDerivation