Generátor HMAC-SHA256
Vytvorte podpis HMAC-SHA256 zo správy a tajného kľúča. Nástroj zakóduje oboje ako UTF-8, použije konštrukciu HMAC podľa RFC 2104 s SHA-256 a vráti 256-bitový tag v hexadecimálnom formáte alebo Base64. Vývojári ho používajú na ladenie podpisov webhookov zo služieb ako Stripe, GitHub alebo Slack, na podpisovanie požiadaviek API a porovnávanie výsledkov s vlastným kódom. Kľúč sa nikdy nevracia ani nezaznamenáva.
Často kladené otázky
Čo je HMAC-SHA256?
HMAC-SHA256 je kód na overenie správy vytvorený pomocou SHA-256 a tajného kľúča podľa definície v RFC 2104. Správny tag správy dokáže vypočítať iba niekto, kto pozná kľúč. Výsledok má 32 bajtov alebo 64 hexadecimálnych znakov.
Ako overím podpis webhooku?
Vložte presné surové telo požiadavky ako správu a svoj podpisový tajný kľúč ako kľúč, potom výsledok porovnajte s hlavičkou podpisu. Mnohé služby podpisujú kombináciu, napríklad časovú značku Stripe, bodku a telo požiadavky, preto správu zostavte podľa ich dokumentácie. Jediný zmenený bajt vytvorí iný tag.
Existuje známy testovací vektor?
Testovací prípad 2 v RFC 4231 používa kľúč Jefe a správu what do ya want for nothing? a očakáva hodnotu 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Tento nástroj vráti presne túto hodnotu.
Ako sa kľúč a správa kódujú?
Oboje sa kóduje ako text UTF-8. Ak je vaše tajomstvo zadané v hexadecimálnom formáte alebo ako Base64, ako to robia niektoré služby, bajty sa líšia od zobrazeného textu a kľúč musíte najprv dekódovať vo vlastnom kóde. Medzery a zalomenia riadkov sa započítavajú v oboch poliach.
Ukladá sa môj tajný kľúč?
Nie. Kľúč sa použije iba na výpočet tagu počas spracovania požiadavky. Neuvádza sa v odpovedi, nezaznamenáva sa ani neukladá.
Môže byť kľúč prázdny alebo veľmi dlhý?
HMAC prijíma kľúče ľubovoľnej dĺžky vrátane prázdneho kľúča. Kľúče dlhšie ako 64 bajtov sa najprv hashujú pomocou SHA-256, ako stanovuje RFC. Na skutočné použitie si zvoľte náhodný kľúč s dĺžkou aspoň 32 bajtov.
Mám zvoliť hexadecimálny formát alebo Base64?
Použite formát, ktorý používa druhá strana. GitHub a Stripe používajú hexadecimálny formát, zatiaľ čo Slack pridáva pred hexadecimálnu hodnotu v0= a mnohé systémy založené na AWS a JWT používajú Base64. Oba formáty kódujú rovnakých 32 bajtov.
Je HMAC-SHA256 to isté ako hash SHA-256 kľúča a správy spojenej dohromady?
Nie. HMAC hashujú správu dvakrát pomocou vnútorne a zvonka doplnených kľúčov, čím chráni pred útokmi predĺžením dĺžky. Spojením kľúča a správy a jednorazovým hashovaním získate iný a menej bezpečný výsledok.
Ako mám v kóde porovnávať podpisy?
Použite funkciu na porovnávanie v konštantnom čase, napríklad crypto.timingSafeEqual v Node.js alebo hmac.compare_digest v Pythone. Bežné porovnanie reťazcov môže prezradiť informácie o očakávanom tage prostredníctvom času spracovania.
Aká veľká môže byť správa?
Správa a kľúč môžu mať spolu až 5 MiB textu. To stačí na typické dátové obsahy webhookov a požiadavky API.