HMAC-framleiðandi
Reiknaðu HMAC-SHA1, SHA-256, SHA-384 eða SHA-512 með texta-, hex- eða Base64-lykli, fáðu hex- og Base64-úttak og athugaðu webhook-undirskrift í vafranum.
Skilaboðin eru undirrituð nákvæmlega eins og þau eru slegin inn, kóðuð sem UTF-8, með bilum og línuskilum.
- HMAC (hex)
- HMAC (Base64)
- Undirskriftarhaus webhook (að hætti GitHub)
Samanburðurinn tekur jafn langan tíma alltaf, eins og netþjónn ætti að gera, svo tíminn afhjúpar ekki hversu margir stafir passa.
Hvernig á að reikna HMAC
- Límdu Skilaboð. Fyrir webhook þarf þetta að vera hrátt meginmál beiðninnar, bæti fyrir bæti.
- Sláðu inn Leynilykill og veldu Snið lykils: Texti (UTF-8), Sextándakerfi eða Base64.
- Veldu Reiknirit: HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 eða HMAC-SHA512.
- Niðurstaðan uppfærist á meðan þú skrifar; þú getur líka smellt á Búa til HMAC. Þú færð HMAC (hex), HMAC (Base64) og Undirskriftarhaus webhook (að hætti GitHub), hvert með Afrita-hnapp.
- Til að athuga undirskrift sem þú fékkst skaltu líma hana í Bera saman við væntanlega undirskrift (hex, Base64 eða sha256=…). Verkfærið segir hvort hún passi.
Skilaboðin eru kóðuð sem UTF-8 nákvæmlega eins og þau eru slegin inn, með bilum og línuskilum. Útreikningurinn notar Web Crypto API vafrans þíns; skilaboðin og lykillinn fara aldrei af tækinu þínu.
Hvað HMAC er
HMAC (hash-based message authentication code, RFC 2104) sameinar leynilykil og tætifall:
HMAC(K, m) = H((K′ ⊕ opad) ‖ H((K′ ⊕ ipad) ‖ m))
þar sem K′ er lykillinn fylltur upp í blokkarstærð tætifallsins (tættur fyrst ef hann er lengri) og ipad/opad eru fastir fastar. Aðeins sá sem þekkir lykilinn getur búið til réttan kóða fyrir skilaboð, og öll breyting á skilaboðunum breytir kóðanum algjörlega. Þess vegna undirrita HMAC-kóðar webhook-köll, API-beiðnir (til dæmis AWS Signature Version 4) og HS256 JSON Web Token.
HMAC er ekki dulritun: skilaboðin eru ekki falin. Það er heldur ekki lykilorðatætigildi; til að geyma lykilorð skaltu nota hægvirkt fall eins og bcrypt eða Argon2.
Lengd úttaksins fer eftir reikniritinu: 20 bæti fyrir SHA-1, 32 fyrir SHA-256, 48 fyrir SHA-384 og 64 fyrir SHA-512. HMAC-SHA1 telst enn öruggt sem MAC, en veldu SHA-256 fyrir ný kerfi. Mælt er með slembnum lykli sem er að minnsta kosti jafn langur og úttakið (32 bæti fyrir HMAC-SHA256); hex- eða Base64-lyklar gera þér kleift að slá slík slembibæti beint inn.
Að athuga GitHub-webhook
GitHub undirritar hverja sendingu með webhook-leyndarmálinu þínu og sendir niðurstöðuna í hausnum X-Hub-Signature-256 sem sha256= og síðan hex-HMAC-SHA256 af meginmálinu. Dæmið í eigin skjölum GitHub notar leyndarmálið It's a Secret to Everybody og meginmálið Hello, World!; sláðu þau inn hér með HMAC-SHA256 og hausinn sýnir:
X-Hub-Signature-256: sha256=757107ea0eb2509fc211221cce984b8a37570b6d7586c22c46f4379c8b043e17
Samanburðarreiturinn tekur við allri hauslínunni, gildinu sha256=…, eða berri hex- eða Base64-undirskrift (Stripe, Shopify og Slack nota svipaðar aðferðir með eigin hausum og undirrituðum strengjum). Fyrir SHA-384 og SHA-512 sýnir verkfærið almennan X-Signature-haus, þar sem enginn sameiginlegur staðall er til.
Samanburður í föstum tíma
Netþjónn sem ber undirskriftir saman með venjulegum strengjasamanburði stöðvast við fyrsta ólíka staf. Með því að mæla svartíma gæti árásaraðili giskað á gilda undirskrift einn staf í einu. Samanburðurinn í þessu verkfæri skoðar hvert bæti óháð niðurstöðu, eins og netþjónn ætti að gera með crypto.timingSafeEqual í Node.js, hmac.compare_digest í Python eða hash_equals í PHP.
Algengar spurningar
Af hverju er HMAC-ið mitt frábrugðið því sem netþjónninn minn reiknar?
Algengustu orsakir eru önnur skilaboð (netþjónninn undirritar hrátt meginmál en þú límdir endurformað JSON, eða línuskil eru ólík), lykill í röngu Snið lykils, eða annað reiknirit. Jafnvel eitt aukabil breytir allri niðurstöðunni.
Á úttakið að vera hex eða Base64?
Bæði kóða sömu bætin. GitHub notar hex, en mörg önnur vefviðmót, eins og Shopify, nota Base64. Notaðu það snið sem móttökukerfið býst við.
Get ég notað tóman lykil?
Verkfærið tekur við honum og varar þig við: með tómum lykli getur hver sem er reiknað sama HMAC, svo það sannar ekkert.
Er HMAC-SHA1 brotið eins og SHA-1?
Árekstraárásir á SHA-1 brjóta ekki HMAC-SHA1, sem telst enn öruggt sem MAC. Það er áfram stutt fyrir eldri kerfi eins og gamla X-Hub-Signature-hausinn, en ný kerfi ættu að nota HMAC-SHA256 eða sterkara.
Er leynilykillinn minn öruggur hér?
Lykillinn og skilaboðin eru aðeins unnin í vafranum þínum og aldrei send neitt. Samt sem áður skaltu fara varlega með framleiðsluleyndarmál og skipta því út ef þú heldur að það hafi lekið.
Tengd verkfæri
- Tætigildaframleiðandi Búðu til MD5-, SHA-1-, SHA-256- og SHA-512-tætigildi texta eða skráa af hvaða stærð sem er og staðfestu skráarsummur. Allt keyrir í vafranum þínum.
- JWT-afkóðari Afkóðaðu haus og gagnahluta JWT, lestu exp, iat og nbf sem dagsetningar og sannreyndu HS256-, RS256- eða ES256-undirskrift beint í vafranum þínum.
- Base64-kóðun og afkóðun Ókeypis Base64-kóðun og afkóðun með fullum UTF-8 stuðningi og base64url-valkosti. Virkar í vafranum þínum og engu er hlaðið upp.
- Bcrypt-framleiðandi og athugun Búðu til bcrypt-tætigildi með kostnaðarstuðli frá 4 til 14, athugaðu lykilorð gegn tætigildi og sjáðu útgáfu, kostnað, salt og tætigildið sjálft.