Identyfikacja skrótu to proces określania, który algorytm kryptograficzny wyprodukował dany skrót. Kryptograficzne funkcje skrótu, takie jak MD5, SHA-1 i SHA-256, generują dane wyjściowe o stałej długości, a właśnie ta długość jest podstawowym sygnałem używanym do identyfikacji nieznanego skrótu. Gdy napotkasz ciąg szesnastkowy w zrzucie bazy danych, pliku konfiguracyjnym lub odpowiedzi API, narzędzie do identyfikacji skrótów wskaże, który algorytm go najprawdopodobniej wygenerował.
Każdy algorytm skrótu odwzorowuje dowolne dane wejściowe na dane wyjściowe o stałym rozmiarze, zwane skrótem (ang. digest). MD5 zawsze generuje 128 bitów (32 znaki hex), SHA-1 zawsze generuje 160 bitów (40 znaków hex), a SHA-256 zawsze generuje 256 bitów (64 znaki hex). Ta deterministyczna długość danych wyjściowych sprawia, że identyfikacja algorytmu jest możliwa bez dostępu do oryginalnych danych wejściowych ani kodu haszującego.
Identyfikacja wyłącznie na podstawie długości nie zawsze jest jednoznaczna. Kilka algorytmów może mieć tę samą długość danych wyjściowych — na przykład SHA-256 i SHA3-256 oba generują 64-znakowe skróty hex. W takich przypadkach narzędzie do identyfikacji skrótów zwraca listę kandydatów uszeregowanych według częstości występowania. Dodatkowy kontekst, taki jak system źródłowy, format kodowania (hex lub Base64) oraz obecność prefiksów algorytmu (np. '$2b$' dla bcrypt), pozwala zawęzić możliwości.
Po co używać narzędzia do identyfikacji skrótów?
Nieznane skróty pojawiają się regularnie podczas audytów bezpieczeństwa, migracji baz danych i analizy kryminalistycznej. Narzędzie do identyfikacji skrótów eliminuje zgadywanie i wskazuje właściwy algorytm w ciągu kilku sekund.
⚡
Natychmiastowe wykrywanie
Wklej skrót i natychmiast uzyskaj listę kandydatów. Nie trzeba ręcznie liczyć znaków ani przeglądać tabel referencyjnych — narzędzie automatycznie mapuje długość hex na wszystkie pasujące algorytmy.
🔒
Analiza z priorytetem prywatności
Cała identyfikacja przebiega wyłącznie w przeglądarce przy użyciu JavaScript. Wartość skrótu nigdy nie opuszcza Twojego urządzenia, co ma znaczenie przy analizie skrótów haseł, tokenów uwierzytelniających lub wrażliwych dowodów kryminalistycznych.
📋
Pełne pokrycie algorytmów
Wykrywa MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 oraz ich odpowiedniki SHA-3. Tabela referencyjna obejmuje pełne rodziny SHA-2 i SHA-3, a także popularne alternatywy, takie jak RIPEMD-160 i BLAKE2.
🚫
Bez konta ani instalacji
Działa natychmiast w każdej nowoczesnej przeglądarce. Bez rejestracji, klucza API ani narzędzia CLI do zainstalowania. Dodaj do zakładek i używaj za każdym razem, gdy napotkasz nieznany skrót — na dowolnym systemie operacyjnym i urządzeniu.
Przypadki użycia narzędzia do identyfikacji skrótów
Audyt bezpieczeństwa
Podczas testów penetracyjnych identyfikacja algorytmów skrótów haseł w wykradzionych bazach danych określa podejście do łamania. Skróty MD5 i SHA-1 wskazują słabą ochronę i mogą być priorytetyzowane do naprawy.
Migracja bazy danych
Podczas migracji rekordów użytkowników między systemami algorytm przechowywanych skrótów haseł musi być znany, aby poprawnie skonfigurować nową warstwę uwierzytelniania. Błędna identyfikacja algorytmu powoduje, że wszystkie logowania kończą się niepowodzeniem.
DevOps i CI/CD
Potoki budowania często zawierają sumy kontrolne do weryfikacji artefaktów. Ustalenie, czy suma kontrolna to SHA-256 czy SHA-512, gwarantuje użycie właściwego polecenia weryfikacji w skryptach wdrożeniowych.
Kryminalistyka cyfrowa
Eksperci kryminalistyczni napotykają skróty w dziennikach integralności plików, rekordach blockchain i metadanych dowodów. Identyfikacja algorytmu jest warunkiem wstępnym weryfikacji łańcucha dowodowego.
Integracja z API
Zewnętrzne API czasami zwracają wartości skrótów bez dokumentowania używanego algorytmu. Identyfikacja typu skrótu na podstawie odpowiedzi pozwala poprawnie skonfigurować weryfikację podpisu webhooka lub walidację sumy kontrolnej.
Nauka kryptografii
Studenci realizujący kursy kryptografii mogą wklejać skróty wygenerowane przez różne algorytmy i natychmiast zobaczyć zależność między wyborem algorytmu, długością danych wyjściowych a właściwościami bezpieczeństwa.
Tabela referencyjna długości algorytmów skrótu
Poniższa tabela mapuje każdy popularny algorytm skrótu na rozmiar danych wyjściowych w bitach, znakach hex i surowych bajtach. Jest to główna tabela przeglądowa używana przez narzędzia do identyfikacji skrótów. Gdy wiele algorytmów ma tę samą długość hex, do ich rozróżnienia potrzebny jest dodatkowy kontekst.
Algorytm
Bity
Znaki hex
Bajty
Uwagi
MD5
128
32
16
Broken — collisions trivial since 2004
SHA-1
160
40
20
Deprecated — SHAttered attack (2017)
SHA-224
224
56
28
Truncated SHA-256; rarely used standalone
SHA-256
256
64
32
Current standard; TLS, Git, Bitcoin
SHA-384
384
96
48
Truncated SHA-512; CNSA Suite approved
SHA-512
512
128
64
Maximum SHA-2 output; large-data hashing
SHA3-256
256
64
32
Keccak-based; NIST alternative to SHA-2
SHA3-512
512
128
64
Keccak-based; highest SHA-3 strength
RIPEMD-160
160
40
20
Used in Bitcoin address derivation
BLAKE2s
256
64
32
Faster than SHA-256; 256-bit output
Rozróżnianie niejednoznacznych długości skrótów
Niektóre długości hex pasują do wielu algorytmów. Dwie najczęstsze niejednoznaczności to 64-znakowe skróty (SHA-256 a SHA3-256) i 40-znakowe skróty (SHA-1 a RIPEMD-160). Poniżej wyjaśniono, jak je odróżnić, gdy sama długość jest niewystarczająca.
64 znaki hex: SHA-256 a SHA3-256
Oba algorytmy generują 256-bitowe (64-znakowe) skróty. SHA-256 jest zdecydowanie częstszy w praktyce — commity Git, certyfikaty TLS, bloki Bitcoin i większość podpisów API używa SHA-256. SHA3-256 pojawia się zazwyczaj tylko w systemach, które jawnie wymagają zgodności z NIST SP 800-185 lub konstruktów opartych na Keccak. Aby potwierdzić, sprawdź dokumentację systemu źródłowego.
40 znaków hex: SHA-1 a RIPEMD-160
SHA-1 jest zdecydowanie bardziej rozpowszechnionym 160-bitowym skrótem — historycznie używanym w Git (przed przejściem na SHA-256), TLS i podpisywaniu kodu. RIPEMD-160 pojawia się głównie przy generowaniu adresów Bitcoin (HASH160 = SHA-256 po którym następuje RIPEMD-160). Jeśli skrót pochodzi z kontekstu kryptowalut, weź pod uwagę RIPEMD-160; w przeciwnym razie SHA-1 jest bardziej prawdopodobnym kandydatem.
Przykłady kodu
Poniżej znajdują się działające implementacje identyfikacji skrótu na podstawie długości hex w czterech językach. Każda funkcja waliduje kodowanie hex, sprawdza liczbę znaków i zwraca wszystkie pasujące algorytmy.
package main
import (
"fmt"
"regexp"
)
var hexPattern = regexp.MustCompile("^[0-9a-fA-F]+$")
var hashLengths = map[int][]string{
32: {"MD5"},
40: {"SHA-1", "RIPEMD-160"},
56: {"SHA-224", "SHA3-224"},
64: {"SHA-256", "SHA3-256", "BLAKE2s"},
96: {"SHA-384", "SHA3-384"},
128: {"SHA-512", "SHA3-512", "BLAKE2b"},
}
func identifyHash(hex string) []string {
if !hexPattern.MatchString(hex) {
return []string{"Not a hex-encoded hash"}
}
if algos, ok := hashLengths[len(hex)]; ok {
return algos
}
return []string{fmt.Sprintf("Unknown (%d hex chars)", len(hex))}
}
func main() {
fmt.Println(identifyHash("d41d8cd98f00b204e9800998ecf8427e"))
// → [MD5]
}
CLI (Bash)
#!/bin/bash
# Identify a hash from the command line by character count
hash="$1"
if [[ ! "$hash" =~ ^[0-9a-fA-F]+$ ]]; then
echo "Not a hex-encoded hash"
exit 1
fi
len=${#hash}
case $len in
32) echo "MD5 (128-bit)" ;;
40) echo "SHA-1 or RIPEMD-160 (160-bit)" ;;
56) echo "SHA-224 or SHA3-224 (224-bit)" ;;
64) echo "SHA-256 or SHA3-256 (256-bit)" ;;
96) echo "SHA-384 or SHA3-384 (384-bit)" ;;
128) echo "SHA-512 or SHA3-512 (512-bit)" ;;
*) echo "Unknown hash length: $len chars" ;;
esac
# Usage: ./identify.sh d41d8cd98f00b204e9800998ecf8427e
# → MD5 (128-bit)
Często zadawane pytania
Jak działa identyfikacja skrótu?
Identyfikacja skrótu opiera się przede wszystkim na długości skrótu zakodowanego w hex. Każdy algorytm skrótu generuje stałą liczbę bitów wyjściowych: MD5 generuje 128 bitów (32 znaki hex), SHA-1 generuje 160 bitów (40 znaków hex), SHA-256 generuje 256 bitów (64 znaki hex) i tak dalej. Narzędzie mierzy długość ciągu, weryfikuje, czy zawiera wyłącznie znaki szesnastkowe, i mapuje go na znane rozmiary danych wyjściowych algorytmów.
Czy narzędzie do identyfikacji skrótów może jednoznacznie określić algorytm?
Nie zawsze. Wiele algorytmów może generować dane wyjściowe tej samej długości. SHA-256 i SHA3-256 oba generują 64 znaki hex. SHA-1 i RIPEMD-160 oba generują 40 znaków hex. W takich przypadkach narzędzie zwraca wszystkich kandydatów. Aby zawęzić wynik do jednego algorytmu, potrzebny jest kontekst — system źródłowy, dokumentacja lub prefiksy algorytmu.
Co zrobić, gdy skrót jest zakodowany w Base64 zamiast hex?
Skróty zakodowane w Base64 używają innego zestawu znaków (A-Z, a-z, 0-9, +, /) i mają inne długości niż ich odpowiedniki hex. 256-bitowy skrót to 44 znaki Base64, ale 64 znaki hex. Najpierw zdekoduj ciąg Base64 do surowych bajtów, a następnie sprawdź długość w bajtach: 16 bajtów = MD5, 20 bajtów = SHA-1, 32 bajty = SHA-256, 48 bajtów = SHA-384, 64 bajty = SHA-512.
Czy wklejanie skrótów haseł do internetowego narzędzia identyfikacyjnego jest bezpieczne?
Narzędzie działa wyłącznie w przeglądarce — żadne dane nie są przesyłane na serwer. Skrót nigdy nie opuszcza Twojego urządzenia. Mimo to, aby zapewnić maksymalne bezpieczeństwo operacyjne podczas formalnego audytu, możesz to zweryfikować, sprawdzając kartę sieciową w narzędziach deweloperskich przeglądarki lub używając narzędzia offline po załadowaniu strony.
Dlaczego MD5 jest nadal używany, skoro jest kryptograficznie przełamany?
MD5 jest przełamany pod względem odporności na kolizje — atakujący może stworzyć dwa różne dane wejściowe generujące ten sam skrót. Jednak MD5 jest nadal używany w kontekstach niezwiązanych z bezpieczeństwem: sumy kontrolne plików do weryfikacji pobierania, klucze pamięci podręcznej, deduplikacja i ETag w HTTP. W tych zastosowaniach przypadkowe kolizje są astronomicznie mało prawdopodobne, a celowe ataki nie stanowią problemu. MD5 nie może być używany do haszowania haseł, podpisów cyfrowych ani weryfikacji certyfikatów.
Jak identyfikować skróty bcrypt, scrypt lub Argon2?
Funkcje haszowania haseł, takie jak bcrypt, scrypt i Argon2, używają charakterystycznych prefiksów ciągów zamiast surowego wyjścia hex. Skróty bcrypt zaczynają się od '$2a$', '$2b$' lub '$2y$', po których następuje współczynnik kosztu. Skróty Argon2 zaczynają się od '$argon2id$' lub '$argon2i$'. Skróty scrypt zazwyczaj zaczynają się od '$scrypt$'. Nie są to surowe skróty kryptograficzne, dlatego identyfikacja oparta na długości nie ma zastosowania — sam prefiks identyfikuje algorytm.
Jaka jest różnica między SHA-2 a SHA-3?
SHA-2 (obejmujący SHA-256, SHA-384 i SHA-512) oparty jest na konstrukcji Merkle-Damgård, zaprojektowanej przez NSA i znormalizowanej w FIPS 180-4. SHA-3 (SHA3-256, SHA3-384, SHA3-512) oparty jest na konstrukcji gąbkowej Keccak, wybranej w drodze publicznego konkursu NIST i znormalizowanej w FIPS 202. Oba generują dane wyjściowe tej samej długości przy odpowiadających poziomach bezpieczeństwa, ale używają fundamentalnie różnych wewnętrznych struktur. SHA-3 został zaprojektowany jako zabezpieczenie na wypadek wykrycia strukturalnych słabości SHA-2, choć dotychczas żadnych takich słabości nie wykazano.