Bagikan melalui


Membuat HMAC

Untuk menghitung sebuah HMAC

  1. Dapatkan penunjuk kePenyedia Layanan Kriptografi (CSP) Microsoftdengan memanggil CryptAcquireContext.
  2. Buat handle ke objek hash HMAC dengan memanggil CryptCreateHash. Teruskan CALG_HMAC dalam parameter Algid . Teruskan handle kunci simetris dalam parameter hKey. Kunci simetris ini adalah kunci yang digunakan untuk menghitung HMAC.
  3. Tentukan jenis hash yang akan digunakan dengan memanggilCryptSetHashParam dengan parameter dwParam diatur ke nilai HP_HMAC_INFO. Parameter pbData harus menunjuk ke struktur HMAC_INFO yang diinisialisasi.
  4. PanggilCryptHashData untuk mulai menghitung HMAC data. Panggilan pertama ke CryptHashData menyebabkan nilai kunci dikombinasikan menggunakan operator XOR dengan string bagian dalam dan data. Hasil dari operasi XOR di-hash, kemudian data target untuk HMAC (ditunjukkan oleh parameter pbData yang diteruskan dalam panggilan ke CryptHashData) di-hash. Jika perlu, panggilan berikutnya ke CryptHashData kemudian dapat dilakukan untuk menyelesaikan hashing data target.
  5. Panggil CryptGetHashParam dengan parameter dwParam diatur ke HP_HASHVAL. Panggilan ini menyelesaikan hash bagian dalam dan menggabungkan string luar dengan menggunakan XOR dengan kunci. Hasil operasi XOR di-hash, dan kemudian hasil hash bagian dalam (selesai pada langkah sebelumnya) di-hash. Hash luar kemudian diselesaikan dan dikembalikan dalam parameter pbData dan panjang dalam parameter dwDataLen.

Nota

Jangan gunakan kuncisimetris(sesi) yang sama untuk enkripsi pesan dan pembuatanKode Autentikasi Pesan (MAC). Menggunakan kunci yang sama untuk keduanya sangat meningkatkan risiko pesan didekodekan oleh penyerang.