Wiersze skrótów mają postać „ALGORYTM skrót”, abyś mógł skopiować je do notatek o wydaniu lub manifestów pobierania.
Generator skrótów — każdy algorytm wyjaśniony od podstaw
W jednym zdaniu: kryptograficzna funkcja skrótu to jednokierunkowy blender — przyjmuje dowolną liczbę bajtów i ściska je do odcisku o stałej długości, tak że to samo wejście zawsze daje ten sam odcisk, ale odcisk nic nie mówi o tym, jak odtworzyć wejście. Ta strona uruchamia jedenaście z nich w całości w karcie przeglądarki.
Każdy algorytm poniżej jest wyjaśniony w tych samych czterech krokach: czym jest prostymi słowami, intuicja działania bez wzorów, czy wciąż warto go używać i jakich błędów ludzie najczęściej popełniają.
MD5
Czym jest. MD5 (1992) ściska dowolne wejście do odcisku 128-bitowego (32 znaki hex). Zaprojektowano go, by był szybki na komputerach lat 90., i rzeczywiście jest — dlatego wciąż jest wszędzie: na stronach pobierania oprogramowania, w pamięciach podręcznych deduplikacji plików, w starszych kluczach baz danych.
Jak to działa, intuicyjnie. Wejście jest cięte na fragmenty po 64 bajty. Każdy fragment jest cztery razy mieszany w 128-bitowym stanie kroczącym (cztery nieco różne rundy mieszania), a po ostatnim fragmencie stan jest wypisywany jako skrót. Mieszanie zbudowano z dodawania, rotacji i wyszukiwań w tablicach — tanio wtedy, tanio teraz.
Czy warto go używać? Do sum kontrolnych, gdy nikt nie próbuje oszukać — wykrywanie uszkodzonego pobrania, szukanie duplikatów plików — tak, nadal doskonale zgłasza uszkodzenia. Do wszystkiego, co wrogie, nie: od 2004 roku badacze potrafią spreparować dwa różne pliki o tym samym MD5 w sekundy, a prawdziwe fałszerstwa certyfikatów z kolizjami MD5 zdarzyły się w 2008. Traktuj go jak numer seryjny, nie jak zamek.
Typowe błędy. Używanie MD5 do haseł (za szybki — zobacz Generator skrótów haseł, co tam faktycznie pasuje); ufanie plikowi, bo „MD5 się zgadza”, gdy atakujący też opublikował MD5; oraz wklejanie całej linii MD5 (plik) = skrót zamiast samego skrótu — pole Weryfikacja powyżej przyjmuje oba.
SHA-1
Czym jest. SHA-1 (1995, NSA) daje skrót 160-bitowy (40 znaków hex). Przez dwadzieścia lat był domyślnym skrótem integralności Gita, certyfikatów TLS i podpisów PGP.
Jak to działa, intuicyjnie. Ten sam przepis rodzinny co MD5, ale z 160-bitowym stanem, 80 rundami mieszania na fragment 64-bajtowy i szerszym zestawem operacji. Dodatkowe rundy miały utrudnić odwrotną inżynierię blendera.
Czy warto go używać? Nie, do czegokolwiek wrogiego. Teoretyczne złamanie stało się praktyczne w 2017 roku, gdy Google wytworzył dwa różne pliki PDF o identycznych wartościach SHA-1 (atak SHAttered, ok. 6500 lat-procesora). Git nadal przechowuje obiekty pod SHA-1, ale traktuje go wyłącznie jako identyfikator i od tej pory dodał wykrywanie kolizji. Do nowej pracy używaj SHA-256 lub SHA-3.
Typowe błędy. Przekonanie, że 160 bitów „wciąż wystarcza” — złamanie dotyczy wewnętrznej struktury, a nie siły brute force; oraz mylenie RIPEMD-160 z SHA-1, bo oba mają 40 znaków hex (pole rozpoznawania je rozróżnia).
SHA-2: SHA-256, SHA-384 i SHA-512
Czym jest. Rodzina SHA-2 (2001, NSA) to koń roboczy współczesnej kontroli integralności. SHA-256 daje 256 bitów (64 znaki hex), SHA-512 daje 512 bitów, a SHA-384 to SHA-512 z wynikiem obciętym do 384 bitów — przydatne, gdy protokół wymaga krótszego znacznika.
Jak to działa, intuicyjnie. Fragmenty po 64 bajty (lub 128 bajtów dla wariantów 512-bitowych) są składane do 8-słowowego stanu przez 64 (lub 80) rund kroków dodawanie-rotacja-mieszanie. W przeciwieństwie do MD5 harmonogram najpierw rozciąga każdy fragment w rozszerzony bufor, co zniwelowało rodzaj ataku, który złamał MD5 i SHA-1. Ciekawostka: na 64-bitowych procesorach SHA-512 jest szybszy niż SHA-256, bo przetwarza dwa razy więcej danych na rundę arytmetyką 64-bitową.
Czy warto go używać? Tak — SHA-256 to dziś domyślna odpowiedź dla sum kontrolnych plików, podpisywania kodu i odcisków certyfikatów, bez znanego praktycznego złamania po dwóch dekadach analiz. Użyj SHA-384/512, gdy potrzebny jest większy margines albo gdy platforma liczy je szybciej.
Typowe błędy. Używanie samego SHA-256 do haseł — to szybki skrót, a szybkość jest tam wrogiem (użyj bcrypt/scrypt/Argon2id); oraz mylenie długości skrótu z siłą w kontekście odporności na kolizje — długość tylko wyznacza sufit.
SHA-3 (SHA3-256 / SHA3-512) i Keccak-256
Czym jest. SHA-3 (2015, zestandaryzowany ze zgłoszenia Keccak przez Bertoniego, Daemena, Peetersa i Van Asche) to trzeci standard skrótów NIST. Nie ma nic wspólnego z wnętrzem SHA-2 — został wybrany właśnie po to, by być niezależną zapasową opcją, gdyby SHA-2 kiedyś upadł.
Jak to działa, intuicyjnie. Zamiast mieszać fragmenty przez mały stan, Keccak wielokrotnie „nasiąka i wyciska”: wejście jest wchłaniane bit po bicie do gąbki 5×5×64-bitowej, cała gąbka jest mieszana stałą permutacją (24 rundy operacji bitowych na całym stanie), a bity skrótu są potem wyciskane. Obraz gąbki to cała idea: bity pojemności nigdy nie są wyprowadzane i to one czynią funkcję jednokierunkową.
Keccak-256 kontra SHA3-256. Różnią się dokładnie jednym bajtem dopełnienia. Pierwotne zgłoszenie zespołu Keccak dopełniało ostatni blok bajtem 0x01; NIST zmienił standardowe dopełnienie na 0x06 (separacja domen). Ethereum przyjęło pierwotne dopełnienie, więc jego „keccak256” różni się od standardowego SHA3-256 dla każdego wejścia. Ta strona oferuje oba, zaznaczane osobno.
Czy warto go używać? Tak — albo jako główny wybór, gdy polityka wymaga algorytmu innego niż SHA-2, albo tam, gdzie ekosystem już go używa. Typowe błędy: zakładanie, że SHA3-256 i Keccak-256 są wymienne (nie są — porównaj dwa wiersze, które ta strona produkuje dla tego samego wejścia); oraz zakładanie, że „SHA-3” zastępuje SHA-2 — oba są bezpieczne, a SHA-2 wciąż jest szerzej wdrożony.
RIPEMD-160
Czym jest. RIPEMD-160 (1996, konsorcjum RIPE europejskich naukowców, wzmocnione przez Dobbertina, Bosselaersa i Preneela) daje 160 bitów. To w całości europejski projekt, celowo niezależny od rodziny SHA zaprojektowanej przez NSA.
Jak to działa, intuicyjnie. Każdy fragment 64-bajtowy jest przetwarzany przez dwie równoległe linie po 80 rund z różnymi stałymi i wartościami rotacji; na końcu obie linie i stary stan są łączone. Struktura dwutorowa była sposobem projektantów na odporność na ataki różnicowe, które łamały inne skróty z lat 90.
Czy warto go używać? W praktyce przetrwał głównie w innych systemach: adresy Bitcoin hashują klucze publiczne przez RIPEMD-160(SHA-256(pk)), starsze klucze OpenPGP oferują go jako opcję skrótu, a jest tradycyjnym skrótem dla fragmentów BitTorrent v1 obok SHA-1. Nie ma praktycznego ataku na kolizje, ale rozmiar 160 bitów daje mu najmniejszy margines bezpieczeństwa na tej stronie. Do nowych samodzielnych zastosowań wybierz SHA-256 lub SHA-3.
Typowe błędy. Przekonanie, że dwie równoległe linie czynią go „dwa razy silniejszym” — o odporności na kolizje decyduje rozmiar wyjścia; oraz mylenie z SHA-1 (ta sama długość 40 znaków hex; pole rozpoznawania wymienia obie możliwości obok siebie).
BLAKE2b-512 i BLAKE2s-256
Czym jest. BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn i Winnerlein) to funkcja skrótu zaprojektowana z myślą o szybkości w oprogramowaniu: BLAKE2b celuje w platformy 64-bitowe z wyjściem do 512 bitów, BLAKE2s w platformy 32-bitowe z wyjściem do 256 bitów.
Jak to działa, intuicyjnie. Pochodzi od finalisty konkursu SHA-3, BLAKE, którego rdzeniem jest permutacja z kluczem zapożyczona z szyfru strumieniowego ChaCha: macierz słów 4×4 jest mieszana naprzemiennie krokami mieszania kolumn i przekątnych — jak tasowanie siatki najpierw z góry na dół, potem wzdłuż przekątnych — przez 12 (BLAKE2b) lub 10 (BLAKE2s) rund na fragment. Ponieważ te kroki świetnie odwzorowują się na instrukcje procesora, BLAKE2 bywa szybszy niż MD5, zachowując bezpieczeństwo porównywalne z SHA-3.
Czy warto go używać? Tak — to w pełni nowoczesny, niezłamany projekt, popularny w oprogramowaniu wrażliwym na wydajność (integralność pakietów w niektórych ekosystemach, przechowywanie adresowane zawartością, deduplikacja kopii zapasowych) i jako szybki MAC. Na tej stronie BLAKE2b-512 daje najdłuższe skróty, a BLAKE2s-256 zwarty, nowoczesny wybór.
Typowe błędy. Myślenie, że „szybciej musi znaczyć słabiej” — BLAKE2 jest szybszy z założenia, a nie przez skróty w rogach; oraz niewiedza, że BLAKE2 przyjmuje też klucz (staje się wtedy MAC) lub ciąg personalizacji — ta strona zawsze używa go w trybie bez klucza.
Jak czytać pola Weryfikacja i Rozpoznawanie
Weryfikacja. Pole weryfikacji normalizuje to, co zostanie wklejone — wielkie lub małe litery, dwukropki co dwie cyfry, prefiks sha256=, opakowanie w stylu BSD SHA256 (plik) = skrót, linię GNU md5sum z nazwą pliku po skrócie, zbłąkane \r\n — a potem przelicza każdy zaznaczony algorytm dla bieżącego wejścia (tekst lub wybrany plik) i zgłasza każdy pasujący. Zielone dopasowanie znaczy „te bajty są dokładnie tym, co wydawca zhashował”; czerwone znaczy, że żaden zaznaczony algorytm tego nie wytworzył — spróbuj zaznaczyć więcej algorytmów albo sprawdź, czy wklejenie nie zostało ucięte.
Rozpoznawanie. Pole identyfikatora niczego nie hashuje; czyta kształt ciągu. Długość zawęża kandydatów: 32 znaki hex mogą być MD5, 40 — SHA-1 lub RIPEMD-160, 64 — SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96 — SHA-384, 128 — SHA-512 / SHA3-512 / BLAKE2b-512. Prefiksy zdradzają hasła ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — to inny gatunek (zobacz Generator skrótów haseł) i celowo nie jest tu obliczany. Ciąg z +, / i = o długości wielokrotności 4 jest raczej danymi zakodowanymi w Base64 niż skrótem hex; narzędzie dekoduje go i podaje, ile bajtów by odpowiadało.
Co rozpoznawanie może, a czego nie może powiedzieć. Długość i zestaw znaków to odciski formatu, a nie dowód algorytmu: dwa 64-znakowe ciągi hex mogą pochodzić z SHA-256 albo z obciętego SHA-512. Rozpoznawanie szereguje możliwości; pole Weryfikacja jest tym, które dowodzi, do czego naprawdę pasują bajty.
Wszystkie jedenaście na jednym rzucie oka
| Algorytm |
Trawienie |
Wymyślony |
Skrót dla „The quick brown fox jumps over the lazy dog” |
| MD5 | 128 bitów | 1992 | 9e107d9d372bb6826bd81d3542a419d6 |
| SHA-1 | 160 bitów | 1995 | 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 |
| SHA-256 | 256 bitów | 2001 | d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 |
| SHA-384 | 384 bity | 2001 | ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1 |
| SHA-512 | 512 bitów | 2001 | 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6 |
| SHA3-256 | 256 bitów | 2015 | 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04 |
| SHA3-512 | 512 bitów | 2015 | 01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450 |
| Keccak-256 | 256 bitów | sprzed 2015 | 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15 |
| RIPEMD-160 | 160 bitów | 1996 | 37f332f68db77bd9d7edd4969571ad671cf9dd3b |
| BLAKE2b-512 | 512 bitów | 2013 | a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918 |
| BLAKE2s-256 | 256 bitów | 2013 | 606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812 |
Każdy skrót w powyższej tabeli powstaje w silnikach tej właśnie strony — zaznacz wszystkie algorytmy, kliknij Próbka i porównaj. Wiersze SHA-3, Keccak, RIPEMD-160 i BLAKE2 pochodzą z samodzielnie hostowanego jądra crypto-shared.js, używanego w narzędziach kryptograficznych tej witryny.
FAQ
Któremu polu ufać przy pobieraniu? Polu Weryfikacja, z zaznaczonym SHA-256 — większość wydawców dziś podpisuje SHA-256 lub SHA-512. Pole Rozpoznawanie tylko wskazuje kandydatów; nigdy niczego nie dowodzi o pliku.
Dlaczego w ogóle jest Keccak-256? Bo Ethereum, Swarm i kilka systemów ledgerowych przyjęło dopełnienie sprzed standaryzacji. Jeśli weryfikowany jest keccak256 z Ethereum, trzeba użyć tego wiersza, a nie SHA3-256.
Czy dwa różne wejścia mogą mieć ten sam skrót? Teoretycznie tak — nieskończenie wiele wejść odwzorowuje się w skończony zbiór skrótów (zasada szufladkowa). W praktyce chodzi o to, by znaleźć taką parę, zanim nastanie koniec wszechświata, i o to właśnie jest „odporność na kolizje”; wszystkie wymienione algorytmy poza MD5 i SHA-1 wciąż się trzymają.
Czy skróty to szyfrowanie? Nie. Szyfrowanie jest odwracalne kluczem; skrót to jednokierunkowy blender. Nic na tej stronie nie da się „odszyfrować” z powrotem do tekstu — i to jest cecha, a nie ograniczenie.