Ang hash ay function ng BYTES, hindi ng mga titik. Kaya walang kahulugan ang "SHA-256 ng isang string" hangga't hindi sinasabi kung anong encoding — at dito, palaging UTF-8. Isang karakter ang piso sign at tatlong byte, kaya ipinapakita ng pahina ang dalawang bilang.
Iyan din ang dahilan ng pinakamadalas na hindi pagtugma: ang newline sa dulo. Ang echo hello ay nagpapadala ng anim na byte, hindi lima, kaya ibang input na ang na-hash. Tingnan ang bilang ng byte kapag hindi tumugma ang isang halaga.
Ang hash at HMAC ay hindi magkapareho ang trabaho. Pinapatunayan ng hash na hindi nagbago ang datos. Kayang kuwentahin ninuman ang SHA-256, kaya kung kayang baguhin ng umaatake ang datos, kaya rin niyang kuwentahin ulit ang digest. Ang HMAC ay nangangailangan ng lihim na susi, kaya iyon ang nagpapatunay kung sino ang gumawa nito.
Halos laging bagong linya sa dulo. Ang `echo hello` ay nagpapadala ng “hello\n” — anim na byte, hindi lima — kaya magkaibang input ang dalawang digest at hindi sila kailanman magtutugma. Gamitin ang `echo -n` o ang `printf`, o idikit ang teksto dito nang walang bagong linya. Iniuulat ng pahinang ito ang bilang ng byte sa tabi ng digest kaya nakikita ang pagkakaiba sa halip na maging misteryo.
UTF-8. Ang hash ay function ng byte at hindi ng karakter, kaya walang kahulugan ang “ang SHA-256 ng isang string” hangga't walang pinapangalanang encoding. Mahalaga ito sa sandaling hindi payak na ASCII ang teksto: ang tandang piso ay isang karakter at tatlong byte. Iyon ang dahilan kung bakit ipinapakita ng pahina ang dalawang bilang.
Pinapatunayan ng payak na hash na hindi nagbago ang datos. Pinapatunayan ng HMAC kung sino ang gumawa nito, dahil kailangan ng lihim na susi para makakuwenta ng isa. Kahit sino ay makakakuwenta ng SHA-256, kaya walang pinapatunayan ang hubad na digest — kung kayang baguhin ng umaatake ang datos, kaya rin niyang kuwentahin muli ang digest para tumugma.
Dahil mahina ang SHA-256 sa length extension: ang pagkaalam sa hash ng lihim kasama ang mensahe ay nagpapahintulot sa umaatake na kuwentahin ang hash ng lihim na iyon kasama ang mas mahabang mensahe, nang hindi kailanman nalalaman ang lihim. Ang nakapugad na konstruksiyon ng HMAC ang nagsasara nito, at iyon ang buong dahilan ng pag-iral nito sa halip na maging basta kumbensiyon.
Sira silang dalawa para sa anumang umaasang mahirap ang banggaan, at pareho pa rin silang unang inaabot ng mga tao. Ang pag-aalok sa kanila katabi ng SHA-2 ay maghaharap sa kanila bilang usapin ng panlasa. Tunay na pangangailangan ang pagpapatunay ng lumang checksum na gawa ng iba at hindi iyon sapat na dahilan para maglabas ng sirang primitive dito.
Walang umaalis sa browser mo. Ang mga hash function ay isinulat sa sariling calculation engine ng site na ito — hindi tinatawag sa network, at hindi kinuha sa third-party na library — kaya ang tekstong idinidikit mo ay hindi kailanman ipinapadala, itinatala o itinatago.
Sinusuri sila laban sa inilathalang test vector at hindi laban sa sarili nila. Ang SHA-256, SHA-384 at SHA-512 ay pinapatunayan laban sa FIPS 180-4, kasama ang kasong isang milyong byte, at ang konstruksiyon ng HMAC laban sa RFC 4231 — na ang kaso 6 ay sumasaklaw sa panuntunang madalas mapalampas ng kinamay na HMAC, na ang susing mas mahaba sa block ay hina-hash at hindi pinuputol.
Ang SHA-384 ay hindi pinutol na SHA-512. Magkaiba ang panimulang halaga nila, kaya ang pagputol ng 48 byte sa SHA-512 ay nagbibigay ng iba at maling sagot.
Sa HMAC, ang susing mas mahaba sa block ng algorithm ay hina-hash muna, hindi pinuputol. Ito ang linyang pinakamadalas na nakakalimutan sa sulat-kamay na HMAC — at kapag nakaligtaan, ang dalawang magkaibang mahabang susi ay puwedeng magbigay ng parehong MAC. Ang RFC 4231 case 6 ay umiiral para mahuli mismo ito, at sinusubok namin laban doon.
Computed in your browser and never transmitted. The implementations are verified against the FIPS 180-4 and RFC 4231 test vectors, but a digest is only as meaningful as the bytes you gave it — check the byte count if a value does not match one from elsewhere. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.