Käyttöohje
- Anna salainen avain ja valitse, onko se tavallista tekstiä vai heksatavuja.
- Liitä viesti, esimerkiksi webhook-payload juuri sellaisena kuin se vastaanotettiin.
- Valitse palvelusi käyttämä algoritmi ja tulosteen koodaus; HMAC päivittyy kirjoittaessasi.
- Tarkista allekirjoitus liittämällä se varmennuskenttään ja etsi teksti ”Match”.
Näin se toimii
HMAC (RFC 2104) yhdistää salaisen avaimen tiivistefunktioon ja tuottaa allekirjoituksen, jonka voi luoda vain avaimen haltija. Palvelut, kuten webhookit ja allekirjoitetut API-pyynnöt, lähettävät HMAC-allekirjoituksen jokaisen viestin mukana, jotta vastaanottaja voi tarkistaa, että viesti on aito ja muuttumaton.
Tämä työkalu käyttää selaimesi Web Crypto APIa (crypto.subtle.importKey and sign), ja se on testattu RFC 4231- ja RFC 2202 -testivektoreilla. Tekstimuotoinen avain ja viesti koodataan UTF-8-muodossa. Heksamuotoinen avain puretaan raakatavuiksi; välilyönnit, kaksoispisteet ja alussa oleva 0x jätetään huomiotta. HMAC-SHA-256 on yleisin valinta; HMAC-SHA-1:tä pidetään edelleen turvallisena MAC-menetelmänä, mutta sitä käyttävät lähinnä vanhemmat API:t.
Jos allekirjoituksesi ei täsmää, tarkista yleisimmin poikkeavat kohdat: viestin tarkat tavut (monet webhook-palveluntarjoajat allekirjoittavat raa'an rungon, eivät uudelleenmuotoiltua JSONia), aikaleima tai etuliite, jonka palveluntarjoaja lisää allekirjoitettavaan merkkijonoon, se, käytetäänkö avain tekstinä vai onko se ensin purettava heksa- tai Base64-muodosta, ja se, onko odotettu allekirjoitus heksa- vai Base64-muotoinen ja sisältääkö se etuliitteen, kuten ”sha256=”, joka on poistettava ennen vertailua.
Esimerkit
RFC 4231 -testitapaus
Avain ”Jefe” (teksti), viesti ”what do ya want for nothing?” ja HMAC-SHA-256 tuottavat arvon 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Käytä ”Kokeile esimerkkiä”, niin se ladataan.
Webhook-allekirjoituksen tarkistaminen
Palveluntarjoaja lähettää jokaisen pyynnön mukana otsakkeen X-Signature: sha256=…. Liitä raaka pyynnön runko viestiksi ja webhook-salaisuus avaimeksi, valitse HMAC-SHA-256 ja Hex ja liitä sitten ”sha256=”-osan jälkeinen arvo vahvistuskenttään.
Heksamuodossa koodattu avain
Jotkin järjestelmät antavat avaimet heksamuotoisina merkkijonoina, kuten 0b0b0b…. Valitse avaimen muodoksi Hex, jotta työkalu allekirjoittaa puretuilla tavuilla; saman merkkijonon käsitteleminen tekstinä antaa täysin erilaisen tuloksen.
Usein kysytyt kysymykset
Mitä eroa on HMAC:lla ja tavallisella tiivisteellä?
Kuka tahansa voi laskea viestistä tavallisen tiivisteen, esimerkiksi SHA-256:n. HMAC riippuu myös salaisesta avaimesta, joten vain avaimen haltija voi tuottaa tai tarkistaa sen. Tämä osoittaa, että viesti on peräisin avaimen haltijalta eikä sitä ole muutettu.
Miksi HMAC-arvoni ei täsmää palvelimeni arvon kanssa?
Syötteen tavut poikkeavat lähes aina: rivinvaihdot, tyhjät merkit, JSON-avainten järjestys, merkistökoodaus tai avain, joka on purettava heksa- tai Base64-muodosta. Vertaa myös samaa koodausta (heksa vai Base64) ja poista etuliitteet, kuten ”sha256=”.
Lähetetäänkö salainen avain minnekään?
Ei. Avainta ja viestiä käyttää vain tämän selainvälilehden Web Crypto API. Niitä ei ladata, tallenneta tai sisällytetä analytiikkaan.
Onko HMAC-SHA-1 edelleen turvallinen?
SHA-1-yhteentörmäykset eivät suoraan riko HMAC-SHA-1:tä, ja se on edelleen hyväksytty yhteensopivuussyistä. Käytä uusissa järjestelmissä HMAC-SHA-256:ta tai vahvempaa.
Tietosuoja
Avain, viesti ja tulos ovat olemassa vain tässä selainvälilehdessä. Mitään ei ladata palvelimelle, tallenneta tai lähetetä analytiikkaan; vain nimetön tapahtuma työkalun käytöstä kirjataan.