Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vypočítat HMAC
- Získejte ukazatel na poskytovatele kryptografických služeb Microsoft (CSP) voláním CryptAcquireContext.
- 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.
- 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.
- 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.
- 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.