HMAC létrehozása
HMAC- kiszámítása
- A Microsoft titkosítási szolgáltató (CSP) mutatóját a CryptAcquireContextmeghívásával szerezheti meg.
- Hozzon létre egy leírót egy HMACkivonatobjektumhoz a CryptCreateHash meghívásával. Adja át a CALG_HMAC értéket az Algid paraméter-ben. Adja át a szimmetrikus kulcs fogantyúját a hKey paraméterként. Ez a szimmetrikus kulcs a HMAC kiszámításához használt kulcs.
- Adja meg a használandó kivonat típusát a CryptSetHashParam függvény hívásával, ahol a dwParam paraméter értéke HP_HMAC_INFO. A pbData paraméternek inicializált HMAC_INFO struktúrára kell mutatnia.
- Hívja meg CryptHashData az adatok HMAC-jának kiszámításához. Az első hívás a CryptHashData esetében a kulcs értéket az XOR operátorral, valamint a belső sztringgel és az adatokkal kombinálja. Az XOR művelet eredménye kivonatolva lesz, majd a rendszer kivonatolja a HMAC céladatait (erre a pbData paraméter mutat rá a CryptHashData) hívásban. Szükség esetén a CryptHashData további hívásokat is készíthetünk a céladatok kivonatolásának befejezéséhez.
- A CryptGetHashParam hívása a dwParam paraméterrel HP_HASHVAL. Ez a hívás a belső kivonat befejezését okozza, és a külső karakterláncot a kulccsal XOR művelettel kombinálja. Az XOR művelet eredményét hasholják, majd a belső hash eredményét (az előző lépésben befejezve) is hasholják. A külső kivonat ezután befejeződik, és vissza van adva a pbData paraméterben, valamint a hossza a dwDataLen paraméterben.
Jegyzet
Ne használja ugyanazt a szimmetrikus (munkamenet) kulcsot az üzenettitkosításhoz és üzenethitelesítési kód (MAC) létrehozásához. Ha ugyanazt a kulcsot mindkettőhöz használja, az jelentősen növeli annak a kockázatát, hogy a támadók dekódolják az üzeneteket.