Řádky otisků mají tvar „ALGORITMUS hash“, takže je můžete zkopírovat do poznámek k vydání nebo do manifestů ke stažení.
Generátor hashů — každý algoritmus vysvětlen od začátku
Jednou větou: kryptografická hashovací funkce je jednosměrný mixér — vezme libovolný počet bajtů a stlačí je do otisku pevné délky tak, že stejný vstup vždy dá stejný otisk, ale otisk vám neřekne, jak vstup znovu sestavit. Tato stránka spouští jedenáct takových funkcí zcela uvnitř karty prohlížeče.
Každý algoritmus níže je vysvětlen stejnými čtyřmi kroky: co je to prostými slovy, intuice o tom, jak funguje, bez vzorců, zda jej dnes ještě používat a nejčastější chyby, které s ním lidé dělají.
MD5
Co to je. MD5 (1992) stlačí libovolný vstup do otisku o 128 bitech (32 hexadecimálních znaků). Byl navržen tak, aby byl rychlý na počítačích 90. let, a je to tak — právě proto je stále všude: stránky ke stahování softwaru, cache pro deduplikaci souborů, starší databázové klíče.
Jak to funguje, intuitivně. Vstup se rozřeže na bloky po 64 bajtech. Každý blok se čtyřikrát promíchá do válcovacího stavu o 128 bitech (čtyři mírně odlišná kola míchání) a po posledním bloku se stav vytiskne jako otisk. Míchání je postaveno ze sčítání, rotací a vyhledávání v tabulkách — tehdy levné, dnes také.
Měli byste jej používat? Pro kontrolní součty tam, kde vás nikdo nepodvádí — zjištění poškozeného stahování, hledání duplicitních souborů — ano, poškození hlásí stále spolehlivě. Pro cokoli protivníkovského ne: od roku 2004 mohou badatelé v řádu sekund vytvořit dva různé soubory se stejným MD5 a skutečné padělky certifikátů s kolizemi MD5 se objevily v roce 2008. Berte jej jako sériové číslo, ne jako zámek.
Časté chyby. Používání MD5 pro hesla (příliš rychlé — viz Generátor hashů hesel, co tam patří místo toho); důvěra v soubor proto, že „MD5 sedí“, když útočník zveřejnil také MD5; a vložení celého řádku MD5 (file) = hash místo samotného hashe — pole Ověřit výše přijímá obojí.
SHA-1
Co to je. SHA-1 (1995, NSA) vytváří otisk o 160 bitech (40 hex znaků). Dvacet let byl výchozím hashem integrity pro Git, certifikáty TLS a podpisy PGP.
Jak to funguje, intuitivně. Stejný rodinný recept jako MD5, ale se 160bitovým stavem, 80 koly míchání na blok o 64 bajtech a širší sadou operací. Další kola měla ztížit zpětné inženýrství mixéru.
Měli byste jej používat? Ne pro cokoli protivníkovského. Teoretický zlom se stal prakticky proveditelným v roce 2017, kdy Google vytvořil dva různé soubory PDF se stejnými hodnotami SHA-1 (útok SHAttered, asi 6500 CPU-let). Git stále ukládá objekty pod SHA-1, ale bere jej jen jako identifikátor, a od té doby přidal detekci kolizí. Pro novou práci používejte SHA-256 nebo SHA-3.
Časté chyby. Přesvědčení, že 160 bitů „je ještě dost dlouhých“ — zlom se týká vnitřní struktury, ne hrubé síly; a záměna RIPEMD-160 se SHA-1, protože obojí má 40 hex znaků (pole identifikátoru výše je rozlišuje).
SHA-2: SHA-256, SHA-384 a SHA-512
Co to je. Rodina SHA-2 (2001, NSA) je pracovním koněm moderní kontroly integrity. SHA-256 dává 256 bitů (64 hex znaků), SHA-512 dává 512 bitů a SHA-384 je SHA-512 s výsledkem zkráceným na 384 bitů — užitečné, když protokol předepisuje kratší značku.
Jak to funguje, intuitivně. Bloky po 64 bajtech (nebo 128 bajtech u variant 512bitových) se skládají do stavu z osmi slov přes 64 (nebo 80) kol kroků přidání-rotace-míchání. Na rozdíl od MD5 nejprve rozpínají rozvrh každý blok do rozšířeného bufferu, a to je to, co porazilo styl útoku, který lámal MD5 a SHA-1. Zajímavost: na 64bitových procesorech je SHA-512 rychlejší než SHA-256, protože zpracuje dvojnásobek dat v každém kole 64bitovou aritmetikou.
Měli byste jej používat? Ano — SHA-256 je dnes výchozí odpovědí pro kontrolní součty souborů, podepisování kódu a otisky certifikátů, bez známého praktického zlomu po dvou desetiletích analýzy. Použijte SHA-384/512, když chcete větší rezervu nebo když platforma běží rychleji.
Časté chyby. Používání samotného SHA-256 pro hesla — je to rychlý hash a rychlost je tam nepřítel (použijte bcrypt/scrypt/Argon2id); a záměna délky otisku se silou pro nastavení odolnosti proti protivníkovským kolizím — délka určuje jen strop.
SHA-3 (SHA3-256 / SHA3-512) a Keccak-256
Co to je. SHA-3 (2015, standardizován z podání Keccak týmem Bertoni, Daemen, Peeters a Van Assche) je třetím hashovacím standardem NIST. Nesdílí nic s vnitřní strukturou SHA-2 — byl vybrán přesně proto, aby byl nezávislou záložou, kdyby SHA-2 někdy padl.
Jak to funguje, intuitivně. Místo míchání bloků skrz malý stav Keccak opakovaně „nasává a vytlačuje“: vstup se bit po bitu absorbuje do houbovité struktury 5×5×64 bitů, celá houba se promíchá pevnou permutací (24 kol bitových operací přes celý stav) a bity otisku se poté vytlačí ven. Obraz houby je celá myšlenka: kapacitní bity se nikdy nevypisují a právě ony dělají funkci jednosměrnou.
Keccak-256 vs SHA3-256. Liší se přesně jedním výplňovým bajtem. Původní podání týmu Keccak doplnilo poslední blok bajtem 0x01; NIST změnil standardní výplň na 0x06 (oddělení domén, které používá Keccak z éry SHA-2). Ethereum přijalo původní výplň, takže jeho „keccak256“ se liší od standardního SHA3-256 pro každý vstup. Tato stránka nabízí obojí, zaškrtávané zvlášť.
Měli byste jej používat? Ano — buď jako primární volbu, když politika chce algoritmus mimo SHA-2, nebo všude tam, kde jej ekosystém už používá. Časté chyby: předpoklad, že SHA3-256 a Keccak-256 jsou zaměnitelné (nejsou — porovnejte dva řádky, které tato stránka vytvoří pro stejný vstup); a předpoklad, že „SHA-3“ nahrazuje SHA-2 — obojí je bezpečné, SHA-2 zůstává rozšířenější.
RIPEMD-160
Co to je. RIPEMD-160 (1996, konsorcium RIPE evropských akademiků, posílené Dobbertinem, Bosselaersem a Preneelem) vydává 160 bitů. Je to čistě evropský návrh, záměrně nezávislý na rodině SHA navržené NSA.
Jak to funguje, intuitivně. Každý blok po 64 bajtech zpracují dvě paralelní linie po 80 kolech s různými konstantami a velikostmi rotací; na konci se obě linie a starý stav spojí. Dvoukolejná struktura byla způsobem, jak se autoři bránili diferenciálním útokům, které lámaly jiné hashe z 90. let.
Měli byste jej používat? V praxi přežívá hlavně uvnitř jiných systémů: adresy Bitcoin hashují veřejné klíče jako RIPEMD-160(SHA-256(pk)), starší klíče OpenPGP jej nabízejí jako volbu hashe a je tradičním hashem pro kusy BitTorrent v1 vedle SHA-1. Nemá žádný praktický útok na kolize, ale velikost 160 bitů mu dává nejmenší bezpečnostní rezervu na této stránce. Pro nové samostatné použití dávejte přednost SHA-256 nebo SHA-3.
Časté chyby. Přesvědčení, že dvě paralelní linie jej dělají „dvakrát silnějším“ — velikost výstupu je to, co omezuje odolnost proti kolizím; a záměna se SHA-1 (stejná délka 40 hex znaků; pole identifikátoru výše uvádí obě možnosti vedle sebe).
BLAKE2b-512 a BLAKE2s-256
Co to je. BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn a Winnerlein) je hash navržený pro rychlost softwaru: BLAKE2b cílí na 64bitové platformy s výstupem až 512 bitů, BLAKE2s na 32bitové platformy s výstupem až 256 bitů.
Jak to funguje, intuitivně. Pochází z finalisty soutěže SHA-3 BLAKE, jehož jádro je klíčová permutace vypůjčená od proudové šifry ChaCha: matice 4×4 slov se míchá střídavě kroky mísení sloupců a diagonál — jako když zamícháte mřížku nejprve shora dolů a pak podél diagonál — a to 12 (BLAKE2b) nebo 10 (BLAKE2s) kol na blok. Protože tyto kroky krásně zapadají do instrukcí procesoru, je BLAKE2 často rychlejší než MD5 a přitom nabízí bezpečnost srovnatelnou s SHA-3.
Měli byste jej používat? Ano — je to plně moderní, nerozlomený návrh, oblíbený v softwaru citlivém na výkon (integrita balíčků v některých ekosystémech, obsahově adresovaná úložiště, deduplikace záloh) a jako rychlý MAC. Na této stránce dává BLAKE2b-512 nejdelší otisky a BLAKE2s-256 kompaktní moderní volbu.
Časté chyby. Myšlenka „rychlejší musí znamenat slabší“ — BLAKE2 je rychlejší konstrukcí, ne zkracováním rohů; a neuvědomit si, že BLAKE2 také přijímá klíč (čímž je MAC) nebo personalizační řetězec — tato stránka jej vždy používá v prostém režimu bez klíče.
Jak číst pole Ověřit a Určit
Ověřit. Pole pro ověření normalizuje cokoli vložíte — velká nebo malá písmena, dvojtečky po dvou číslicích, předponu sha256=, obal ve stylu BSD SHA256 (file) = hash, řádek GNU md5sum s názvem souboru za hashem, zbloudilé \r\n — a poté přepočítá každý zaškrtnutý algoritmus nad vaším aktuálním vstupem (text nebo zvolený soubor) a ohlásí každý algoritmus, který sedí. Zelená shoda znamená „tyto bajty jsou přesně to, co vydavatel hashoval“; červená znamená, že žádný zaškrtnutý algoritmus je nevytvořil — zkuste zaškrtnout více algoritmů nebo zkontrolovat, zda vložení nebylo zkrácené.
Určit. Pole identifikátoru nic nehashuje; čte tvar řetězce. Délka zužuje kandidáty: 32 hexadecimálních znaků může být MD5, 40 může být SHA-1 nebo RIPEMD-160, 64 může být SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96 SHA-384, 128 SHA-512 / SHA3-512 / BLAKE2b-512. Předpony odhalují hashe hesel ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — to je jiný druh a záměrně je tato stránka nepočítá (viz Generátor hashů hesel). Řetězec s +, / a =, jehož délka je násobkem 4, je spíše data kódovaná Base64 než hex otisk; nástroj jej dekóduje a uvede délku v bajtech, která by odpovídala.
Co identifikace může a nemůže říct. Délka a sada znaků jsou otisky formátu, ne důkaz algoritmu: dva řetězce po 64 hex znacích mohou pocházet z SHA-256 nebo ze zkrácené SHA-512. Identifikátor seřadí možnosti; pole Ověřit je to, které skutečně dokáže, s jakým algoritmem se vaše bajty shodují.
Všech jedenáct na jeden pohled
| Algoritmus |
Štěpení |
Vymyšleno |
Otisk „The quick brown fox jumps over the lazy dog“ |
| MD5 | 128 bitů | 1992 | 9e107d9d372bb6826bd81d3542a419d6 |
| SHA-1 | 160 bitů | 1995 | 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 |
| SHA-256 | 256 bitů | 2001 | d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 |
| SHA-384 | 384 bitů | 2001 | ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1 |
| SHA-512 | 512 bitů | 2001 | 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6 |
| SHA3-256 | 256 bitů | 2015 | 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04 |
| SHA3-512 | 512 bitů | 2015 | 01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450 |
| Keccak-256 | 256 bitů | před rokem 2015 | 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15 |
| RIPEMD-160 | 160 bitů | 1996 | 37f332f68db77bd9d7edd4969571ad671cf9dd3b |
| BLAKE2b-512 | 512 bitů | 2013 | a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918 |
| BLAKE2s-256 | 256 bitů | 2013 | 606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812 |
Každý otisk v tabulce výše vytvářejí motory právě této stránky — zaškrtněte všechny algoritmy, klikněte na Ukázka a porovnejte. Řádky SHA-3, Keccak, RIPEMD-160 a BLAKE2 pocházejí z vlastního jádra crypto-shared.js, které používají kryptografické nástroje tohoto webu.
Časté dotazy
Kterému poli mám u stažení věřit? Poli Ověřit se zaškrtnutým SHA-256 — většina vydavatelů dnes podepisuje SHA-256 nebo SHA-512. Pole Určit pouze pojmenovává kandidáty; nikdy nic nedokazuje o vašem souboru.
Proč je Keccak-256 vůbec v seznamu? Protože Ethereum, Swarm a několik účetních systémů se přidrželo výplně z doby před standardem. Ověřujete-li keccak256 z Ethereum, musíte použít tento řádek, ne SHA3-256.
Mohou dva různé vstupy sdílet otisk? V teorii ano — nekonečně mnoho vstupů se zobrazí do konečné množiny otisků (Dirichletův princip). V praxi je nalezení takového páru dříve, než vychladne vesmír, to, oč jde v „odolnosti proti kolizím“, a každý algoritmus výše kromě MD5 a SHA-1 stále obstojí.
Jsou hashe šifrování? Ne. Šifrování je vratné s klíčem; hash je jednosměrný mixér. Nic na této stránce nelze „dešifrovat“ zpět na váš text — a to je vlastnost, ne omezení.