Sdílet prostřednictvím


Vytvoření HMAC

Vypočítat HMAC

  1. Získejte ukazatel na poskytovatele kryptografických služeb Microsoft (CSP) voláním CryptAcquireContext.
  2. Vytvořte popisovač pro objekt hash HMAC voláním CryptCreateHash. V parametru Algid předejte CALG_HMAC. Předejte popisovač symetrického klíče v parametru hKey . Tento symetrický klíč je klíčem používaným k výpočtu HMAC.
  3. Zadejte typ hash, který se má použít voláním CryptSetHashParam s parametrem dwParam nastaveným na hodnotu HP_HMAC_INFO. Parametr pbData musí odkazovat na inicializovanou strukturu HMAC_INFO.
  4. Voláním CryptHashData zahajte výpočet HMAC dat. První volání CryptHashData způsobí, že se hodnota klíče zkombinuje pomocí operátoru XOR s vnitřním řetězcem a daty. Výsledek operace XOR je hashován a pak jsou cílová data pro HMAC (na které odkazuje pbData parametr předaný ve volání funkce CryptHashData) hashována. V případě potřeby mohou být prováděna následná volání CryptHashData, aby se dokončilo hashování cílových dat.
  5. Volání CryptGetHashParam s parametrem dwParam nastaveným na HP_HASHVAL. Toto volání způsobí, že se dokončí vnitřní hash a vnější řetězec se zkombinuje s klíčem pomocí XOR. Výsledek operace XOR je hashovaný a poté je hashovaný výsledek vnitřního hashe (dokončený v předchozím kroku). Vnější hodnota hash je poté dokončena a vrácena v parametru pbData a délka v parametru dwDataLen.

Poznámka

Nepoužívejte stejný klíč symetrického (relace) pro šifrování zpráv i generování kódu pro ověřování zpráv (MAC). Použití stejného klíče u obou výrazně zvyšuje riziko dekódování zpráv útočníky.