Bagikan melalui


Fungsi BCryptCreateHash (bcrypt.h)

Fungsi BCryptCreateHash dipanggil untuk membuat hash atau objek Kode Autentikasi Pesan (MAC).

Sintaks

NTSTATUS BCryptCreateHash(
  [in, out]      BCRYPT_ALG_HANDLE  hAlgorithm,
  [out]          BCRYPT_HASH_HANDLE *phHash,
  [out]          PUCHAR             pbHashObject,
  [in, optional] ULONG              cbHashObject,
  [in, optional] PUCHAR             pbSecret,
  [in]           ULONG              cbSecret,
  [in]           ULONG              dwFlags
);

Parameter

[in, out] hAlgorithm

Handel penyedia algoritma yang dibuat dengan menggunakan fungsi BCryptOpenAlgorithmProvider . Algoritma yang ditentukan ketika penyedia dibuat harus mendukung antarmuka hash.

[out] phHash

Penunjuk ke nilai BCRYPT_HASH_HANDLE yang menerima handel yang mewakili objek hash atau MAC. Handel ini digunakan dalam fungsi hashing atau MAC berikutnya, seperti fungsi BCryptHashData . Setelah Anda selesai menggunakan handel ini, lepaskan dengan meneruskannya ke fungsi BCryptDestroyHash .

[out] pbHashObject

Penunjuk ke buffer yang menerima objek hash atau MAC. Parameter cbHashObject berisi ukuran buffer ini. Ukuran buffer yang diperlukan dapat diperoleh dengan memanggil fungsi BCryptGetProperty untuk mendapatkan properti BCRYPT_OBJECT_LENGTH . Ini akan memberikan ukuran objek hash atau MAC untuk algoritma yang ditentukan.

Memori ini hanya dapat dikosongkan setelah handel yang diarahkan oleh parameter phHash dihancurkan.

Jika nilai parameter ini adalah NULL dan nilai parameter cbHashObject adalah nol, memori untuk objek hash dialokasikan dan dibebaskan oleh fungsi ini. Windows 7: Fungsionalitas manajemen memori ini tersedia dimulai dengan Windows 7.

[in, optional] cbHashObject

Ukuran, dalam byte, dari buffer pbHashObject .

Jika nilai parameter ini adalah nol dan nilai parameter pbHashObject adalah NULL, memori untuk objek kunci dialokasikan dan dikosongkan oleh fungsi ini. Windows 7: Fungsionalitas manajemen memori ini tersedia dimulai dengan Windows 7.

[in, optional] pbSecret

Penunjuk ke buffer yang berisi kunci yang akan digunakan untuk hash atau MAC. Parameter cbSecret berisi ukuran buffer ini. Kunci ini hanya berlaku untuk algoritma hash yang dibuka oleh fungsi BCryptOpenAlgorithmProvider dengan menggunakan bendera BCRYPT_ALG_HANDLE_HMAC_FLAG . Jika tidak, atur parameter ini ke NULL.

[in] cbSecret

Ukuran, dalam byte, dari penyangga pbSecret . Jika tidak ada kunci yang digunakan, atur parameter ini ke nol.

[in] dwFlags

Bendera yang mengubah perilaku fungsi. Ini bisa nol atau nilai berikut.

Nilai Makna
BCRYPT_HASH_REUSABLE_FLAG
Membuat objek hashing yang dapat digunakan kembali. Objek dapat digunakan untuk operasi hashing baru segera setelah memanggil BCryptFinishHash. Untuk informasi selengkapnya, lihat Membuat Hash dengan CNG.

Windows Server 2008 R2, Windows 7, Windows Server 2008 dan Windows Vista: Bendera ini tidak didukung.

Nilai kembali

Mengembalikan kode status yang menunjukkan keberhasilan atau kegagalan fungsi.

Kemungkinan kode pengembalian termasuk, tetapi tidak terbatas pada, berikut ini.

Menampilkan kode Deskripsi
STATUS_SUCCESS
Fungsi berhasil.
STATUS_BUFFER_TOO_SMALL
Ukuran objek hash yang ditentukan oleh parameter cbHashObject tidak cukup besar untuk menahan objek hash.
STATUS_INVALID_HANDLE
Handel algoritma dalam parameter hAlgorithm tidak valid.
STATUS_INVALID_PARAMETER
Satu atau beberapa parameter tidak valid.
STATUS_NOT_SUPPORTED
Penyedia algoritma yang ditentukan oleh parameter hAlgorithm tidak mendukung antarmuka hash.

Keterangan

Bergantung pada mode prosesor apa yang didukung penyedia, BCryptCreateHash dapat dipanggil baik dari mode pengguna atau mode kernel. Pemanggil mode kernel dapat mengeksekusi baik di PASSIVE_LEVEL IRQL atau DISPATCH_LEVEL IRQL. Jika tingkat IRQL saat ini DISPATCH_LEVEL, handel yang disediakan dalam parameter hAlgorithm harus dibuka dengan menggunakan bendera BCRYPT_PROV_DISPATCH , dan setiap pointer yang diteruskan ke fungsi BCryptCreateHash harus merujuk ke memori yang tidak di-patahkan (atau dikunci).

Untuk memanggil fungsi ini dalam mode kernel, gunakan Cng.lib, yang merupakan bagian dari Driver Development Kit (DDK). Untuk informasi selengkapnya, lihat WDK dan Alat Pengembang. Windows Server 2008 dan Windows Vista: Untuk memanggil fungsi ini dalam mode kernel, gunakan Ksecdd.lib.

Persyaratan

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

Lihat juga

BCryptDestroyHash