# Ustvarjalnik HMAC-SHA256

Ustvarite podpis HMAC-SHA256 iz sporočila in skrivnega ključa. Orodje oba kodira v UTF-8, uporabi konstrukcijo HMAC iz RFC 2104 z SHA-256 in vrne oznako z 256 biti v šestnajstiški obliki ali kot Base64. Razvijalci ga uporabljajo za odpravljanje napak pri podpisih spletnih kavljev storitev, kot so Stripe, GitHub ali Slack, za podpisovanje zahtev API in primerjavo rezultatov z lastno kodo. Ključ se nikoli ne vrne ali zabeleži.

## Pogosta vprašanja

### Kaj je HMAC-SHA256?

HMAC-SHA256 je koda za preverjanje pristnosti sporočila, ustvarjena z uporabo SHA-256 in skrivnega ključa, kot določa RFC 2104. Pravilno oznako za sporočilo lahko izračuna samo nekdo, ki pozna ključ. Rezultat je dolg 32 bajtov oziroma 64 šestnajstiških znakov.

### Kako preverim podpis spletnega kavlja?

Kot sporočilo prilepite natančno surovo telo zahteve, kot ključ pa skrivnost za podpisovanje, nato pa rezultat primerjajte z glavo podpisa. Številne storitve podpišejo kombinacijo podatkov, na primer časovni žig Stripe, piko in telo, zato sporočilo sestavite tako, kot je opisano v njihovi dokumentaciji. Že en spremenjen bajt povzroči drugačno oznako.

### Ali obstaja znani testni vektor?

Testni primer 2 v RFC 4231 uporablja ključ Jefe in sporočilo what do ya want for nothing?; pričakovana vrednost je 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. To orodje vrne natanko to vrednost.

### Kako sta kodirana ključ in sporočilo?

Oba sta kodirana kot besedilo UTF-8. Če je vaša skrivnost podana v šestnajstiški obliki ali kot Base64, kot to počnejo nekatere storitve, se bajti razlikujejo od prikazanega besedila, zato morate ključ najprej dekodirati v svoji kodi. Presledki in prelomi vrstic se upoštevajo v obeh poljih.

### Ali se moj skrivni ključ shranjuje?

Ne. Ključ se uporabi samo za izračun oznake med zahtevo. Ni vključen v odgovor, se ne beleži in se ne shranjuje.

### Je lahko ključ prazen ali zelo dolg?

HMAC sprejema ključe poljubne dolžine, tudi prazen ključ. Ključi, daljši od 64 bajtov, se najprej zgostijo z SHA-256, kot določa RFC. Za dejansko uporabo izberite naključen ključ, dolg vsaj 32 bajtov.

### Naj izberem šestnajstiško obliko ali Base64?

Uporabite obliko, ki jo pošlje druga stran. GitHub in Stripe uporabljata šestnajstiško obliko, Slack pred šestnajstiško vrednostjo doda v0=, številni sistemi, ki temeljijo na AWS in JWT, pa uporabljajo Base64. Obe obliki kodirata istih 32 bajtov.

### Je HMAC-SHA256 enak zgoščeni vrednosti ključa in sporočila, združenih skupaj, z uporabo SHA-256?

Ne. HMAC dvakrat zgosti sporočilo z notranjim in zunanjim dopolnjenim ključem, kar ščiti pred napadi s podaljšanjem dolžine. Če združite ključ in sporočilo ter ju enkrat zgostite, dobite drugačen in manj varen rezultat.

### Kako naj v svoji kodi primerjam podpise?

Uporabite funkcijo za primerjavo s konstantnim časom, kot je crypto.timingSafeEqual v Node.js ali hmac.compare_digest v Pythonu. Običajna primerjava nizov lahko razkrije časovne informacije o pričakovani oznaki.

### Kako veliko je lahko sporočilo?

Sporočilo in ključ skupaj sta lahko velika do 5 MiB besedila. To zadostuje za običajne vsebine spletnih kavljev in zahteve API.

Vaš oglas tukaj?

[Pišite nam](mailto:hi@dennn.is?subject=Ogla%C5%A1evanje%20na%20OneClick%20Pro)

[Oglas Zbirka vtičnikov, pripravljena za agente, za WordPress.](https://sleekwp.com/?ref=oneclickpro)
