Cum se folosește
- Introduceți cheia secretă și alegeți dacă este text simplu sau octeți hex.
- Lipiți mesajul, de exemplu un payload de webhook exact așa cum a fost primit.
- Alegeți algoritmul și codificarea de ieșire pe care le folosește serviciul dvs.; HMAC-ul se actualizează pe măsură ce tastați.
- Pentru a verifica o semnătură, lipiți-o în câmpul de verificare și căutați „Potrivire”.
Cum funcționează
HMAC (RFC 2104) combină o cheie secretă cu o funcție hash pentru a produce o semnătură pe care doar cineva care deține cheia o poate crea. Servicii precum webhook-urile și cererile API semnate trimit un HMAC cu fiecare mesaj, astfel încât receptorul poate verifica dacă mesajul este autentic și neschimbat.
Acest instrument folosește Web Crypto API din browser (crypto.subtle.importKey și sign) și este verificat față de vectorii de test RFC 4231 și RFC 2202. O cheie text și mesajul sunt codificate ca UTF-8. O cheie hex este decodificată în octeți bruti; spațiile, două puncte și un 0x inițial sunt ignorate. HMAC-SHA-256 este cea mai obișnuită alegere; HMAC-SHA-1 este încă considerat sigur ca MAC, dar este folosit mai ales de API-uri mai vechi.
Dacă semnătura nu se potrivește, verifică detaliile care diferă cel mai des: octeții exacți ai mesajului (mulți furnizori de webhook semnează corpul brut, nu JSON-ul reformatat), un marcaj de timp sau un prefix pe care furnizorul îl adaugă la șirul semnat, dacă cheia este folosită ca text sau trebuie decodificată mai întâi din hex sau Base64 și dacă semnătura așteptată este hex sau Base64 și are un prefix precum „sha256=”, pe care ar trebui să îl elimini înainte de comparare.
Exemple
Caz de test RFC 4231
Cheia „Jefe” (text), mesajul „what do ya want for nothing?” și HMAC-SHA-256 dau 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Folosește „Încearcă un exemplu” pentru a-l încărca.
Verificarea unei semnături de webhook
Un furnizor trimite antetul X-Signature: sha256=… cu fiecare cerere. Lipește corpul brut al cererii ca mesaj, secretul webhook ca cheie, alege HMAC-SHA-256 și Hex, apoi lipește valoarea de după „sha256=” în câmpul de verificare.
O cheie codificată hex
Unele sisteme emit chei ca șiruri hex, de exemplu 0b0b0b…. Alege Hex ca format al cheii, astfel încât instrumentul să semneze cu octeții decodificați; tratarea aceluiași șir ca text dă un rezultat complet diferit.
Întrebări frecvente
Care este diferența dintre un HMAC și un hash simplu?
Oricine poate calcula un hash simplu, cum ar fi SHA-256, al unui mesaj. Un HMAC depinde și de o cheie secretă, așa că doar cineva care deține cheia îl poate produce sau verifica. Acest lucru dovedește că mesajul provine de la un deținător al cheii și nu a fost modificat.
De ce HMAC-ul meu nu se potrivește cu cel de pe serverul meu?
Octeții de intrare diferă aproape întotdeauna: terminațiile de linie, spațiile albe, ordinea cheilor JSON, codificarea caracterelor sau o cheie care ar trebui decodificată din hex sau Base64. Compară, de asemenea, aceeași codificare (hex versus Base64) și elimină prefixele precum „sha256=”.
Este trimisă cheia mea secretă undeva?
Nu. Cheia și mesajul sunt folosite doar de Web Crypto API în această filă de browser. Nu sunt încărcate, stocate sau incluse în analize.
Este HMAC-SHA-1 încă sigur?
Coliziunile SHA-1 nu sparg direct HMAC-SHA-1, iar acesta este încă acceptat pentru compatibilitate. Pentru sisteme noi, folosiți HMAC-SHA-256 sau mai puternic.
Confidențialitate
Cheia, mesajul și rezultatul există doar în această filă de browser. Nimic nu este încărcat, stocat sau trimis către analiză; este înregistrat doar un eveniment anonim că instrumentul a fost utilizat.