Generator Skrótu MD5

Generuj skrót MD5 z dowolnego tekstu

Tekst wejściowy

Działa lokalnie · Bezpieczne do wklejania sekretów

Skrót MD5

Skrót MD5 pojawi się tutaj…

Czym jest haszowanie MD5?

MD5 (Message-Digest Algorithm 5) to kryptograficzna funkcja skrótu, która produkuje stały 128-bitowy (16-bajtowy) skrót z dowolnego wejścia, niezależnie od jego rozmiaru. Opublikowany w 1992 roku przez Ronalda Rivesta jako RFC 1321, MD5 został zaprojektowany jako szybszy następca MD4 i szybko stał się jedną z najszerzej stosowanych funkcji skrótu w internecie. Algorytm przetwarza dane wejściowe w 512-bitowych blokach przez cztery rundy po 16 operacji każda, używając innej nieliniowej funkcji w każdej rundzie, aby wyprodukować 32-znakowy szesnastkowy odcisk palca.

Funkcja skrótu to transformacja jednokierunkowa: mając dane wejściowe, możesz natychmiast obliczyć skrót, ale mając tylko skrót, nie możesz odtworzyć oryginalnego wejścia. Nawet zmiana jednego bitu w danych wejściowych daje zupełnie inny skrót — właściwość nazywana efektem lawinowym. MD5 odwzorowuje nieskończoną przestrzeń wejściową na stałą 128-bitową przestrzeń wyjściową, więc kolizje (dwa różne dane wejściowe dające ten sam skrót) są matematycznie gwarantowane, ale bezpieczna funkcja skrótu sprawia, że ich znalezienie jest obliczeniowo niewykonalne.

Od 2004 roku badacze zademonstrować praktyczne ataki kolizyjne przeciwko MD5, co oznacza, że nie jest już uważany za bezpieczny do podpisów cyfrowych, certyfikatów ani żadnego kontekstu, gdzie wymagana jest odporność na kolizje. MD5 pozostaje jednak szeroko stosowany do celów niezwiązanych z bezpieczeństwem: weryfikacja integralności pliku po pobraniu, generowanie kluczy pamięci podręcznej, deduplikacja treści oraz tworzenie deterministycznych identyfikatorów z ciągów znaków. W tych zastosowaniach szybkość algorytmu i powszechna obsługa bibliotek czynią go praktycznym wyborem. W 2008 roku Marc Stevens i współpracownicy opublikowali atak kolizji z wybranym prefiksem, co oznacza, że atakujący może spreparować dwa dokumenty z dowolnie wybranymi prefiksami, które mają ten sam skrót. Technikę tę zademonstrowano na Chaos Communication Congress 2008 przez skonstruowanie fałszywego certyfikatu Certification Authority. Złośliwe oprogramowanie Flame z 2012 roku następnie wykorzystało kolizje z wybranym prefiksem do sfałszowania certyfikatu podpisywania kodu Microsoft, umożliwiając mu podszywanie się pod legalną aktualizację Windows. Te rzeczywiste exploity potwierdziły, że algorytm jest kryptograficznie złamany dla wszelkich zastosowań opartych na zaufaniu.

Dlaczego warto użyć tego generatora MD5?

Generuj skróty MD5 natychmiast bez instalowania czegokolwiek lub pisania kodu. Wklej tekst i uzyskaj 32-znakowy skrót szesnastkowy w czasie rzeczywistym.

Natychmiastowe haszowanie
Wyniki aktualizują się w trakcie pisania. Bez klikania przycisków, bez czekania — skrót MD5 pojawia się znak po znaku wraz z modyfikacją danych wejściowych.
🔒
Przetwarzanie z priorytetem prywatności
Wszystkie obliczenia skrótu wykonywane są lokalnie w przeglądarce przy użyciu JavaScript. Twój tekst wejściowy nigdy nie opuszcza urządzenia i nie jest wysyłany na żaden serwer.
📋
Kopiowanie jednym kliknięciem
Skopiuj skrót do schowka jednym kliknięciem. Przełączaj między małymi a wielkimi literami w wyniku szesnastkowym, aby dopasować format wymagany przez Twój system.
🔍
Bez rejestracji
Bez rejestracji, logowania ani limitów użycia. Otwórz stronę i zacznij haszować natychmiast. Działa na każdym urządzeniu z nowoczesną przeglądarką.

Przypadki użycia MD5

Tworzenie frontendu
Generuj skróty do unieważniania pamięci podręcznej dla zasobów statycznych. Dołącz skrót MD5 zawartości pliku do adresów URL CSS i JavaScript, aby przeglądarki pobierały zaktualizowaną wersję po zmianie zawartości.
Inżynieria backendu
Twórz deterministyczne klucze pamięci podręcznej ze złożonych parametrów zapytań lub treści żądań. Skróty MD5 produkują kompaktowe klucze o stałej długości, które dobrze współpracują z Redis, Memcached i warstwami pamięci podręcznej CDN.
DevOps i CI/CD
Weryfikuj integralność pliku po transferach poprzez porównanie sum kontrolnych MD5. Wiele rejestrów pakietów i repozytoriów artefaktów publikuje skróty MD5 obok plików do pobrania w celu szybkiej weryfikacji.
QA i testowanie
Porównuj skróty MD5 odpowiedzi API, zrzutów baz danych lub plików konfiguracyjnych w celu wykrycia nieoczekiwanych zmian między uruchomieniami testów bez porównywania pełnej zawartości.
Inżynieria danych
Deduplikuj rekordy w potokach ETL poprzez obliczanie skrótów MD5 zawartości wierszy. Dwa wiersze z tym samym skrótem są kandydatami do deduplikacji, co redukuje koszty przechowywania i przetwarzania.
Nauka i edukacja
Eksperymentuj z funkcjami skrótu, aby zrozumieć transformacje jednokierunkowe, efekt lawinowy i znaczenie odporności na kolizje dla bezpieczeństwa. MD5 jest najprostszą powszechnie znaną funkcją skrótu do nauki.

MD5 a inne algorytmy skrótu

MD5 jest najszybszym i najkrótszym spośród popularnych algorytmów skrótu, ale oferuje najsłabsze gwarancje bezpieczeństwa. Poniższa tabela porównuje rozmiary skrótów, standardy i odpowiednie przypadki użycia dla każdego algorytmu.

AlgorytmRozmiar skrótuDługość hexStandardNajlepszy do
MD5128 bits32 hex chars1992 / RFC 1321Checksums, non-security fingerprints
SHA-1160 bits40 hex chars1995 / RFC 3174Legacy git commits (being replaced)
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, backup standard
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

Jak działa MD5

MD5 przetwarza dane wejściowe przez konstrukcję Merkle-Damgård: wiadomość jest dopełniana do wielokrotności 512 bitów, dzielona na bloki, a każdy blok jest przepuszczany przez cztery rundy 16 operacji bitowych mieszających dane wejściowe z prekompilowanymi stałymi wywodzonymi z sinusa. Wynikiem jest 128-bitowy stan, który staje się finalnym skrótem.

Każda runda stosuje odrębną nieliniową funkcję pomocniczą do trzech z czterech 32-bitowych słów stanu (A, B, C, D). Runda 1 używa F(B,C,D) = (B AND C) OR (NOT B AND D) — bitowy selektor warunkowy. Runda 2 używa G(B,C,D) = (B AND D) OR (C AND NOT D) — komplementarny selektor. Runda 3 używa H(B,C,D) = B XOR C XOR D — funkcja parzystości. Runda 4 używa I(B,C,D) = C XOR (B OR NOT D) — asymetryczny łącznik. Te cztery funkcje zapewniają, że każdy bit danych wejściowych wpływa na skrót wyjściowy, tworząc efekt lawinowy, który sprawia, że małe zmiany na wejściu powodują duże, nieprzewidywalne zmiany wynikowego skrótu.

Input: "hello world"
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)

Algorytm przebiega w pięciu etapach: (1) dołącz bit 1, a następnie zera, aż długość wiadomości wyniesie 448 mod 512; (2) dołącz oryginalną długość wiadomości jako 64-bitową liczbę całkowitą little-endian; (3) zainicjuj cztery 32-bitowe zmienne stanu (A, B, C, D) stałymi wartościami; (4) przetwarzaj każdy 512-bitowy blok przez 64 operacje używając czterech nieliniowych funkcji (F, G, H, I), po jednej na rundę 16 operacji; (5) dodaj wynikowy stan do sumy bieżącej i wyprowadź finalny 128-bitowy skrót w kolejności bajtów little-endian.

Przykłady kodu

Jak generować skróty MD5 w popularnych językach i środowiskach. Pamiętaj, że MD5 nie jest dostępne w przeglądarkowym Web Crypto API — użyj biblioteki lub Node.js.

JavaScript (Web Crypto — browser & Node.js)
// MD5 is not available in Web Crypto API (it only supports SHA-*)
// Use a library like 'js-md5' or the Node.js crypto module

// Node.js (built-in crypto)
const crypto = require('crypto')
const hash = crypto.createHash('md5').update('hello world').digest('hex')
console.log(hash) // → "5eb63bbbe01eeed093cb22bb8f5acdc3"

// With Unicode input
crypto.createHash('md5').update('cafe\u0301').digest('hex')
// → "4fad076bae205e95bec9dacea498e2ab"
Python
import hashlib

# Basic MD5 hash
result = hashlib.md5(b'hello world').hexdigest()
print(result)  # → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a string (must encode to bytes first)
text = 'hello world'
hashlib.md5(text.encode('utf-8')).hexdigest()
# → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a file
with open('file.bin', 'rb') as f:
    md5 = hashlib.md5()
    for chunk in iter(lambda: f.read(8192), b''):
        md5.update(chunk)
    print(md5.hexdigest())
Go
package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := md5.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 5eb63bbbe01eeed093cb22bb8f5acdc3
}
CLI (Linux / macOS)
# Using md5sum (Linux) or md5 (macOS)
echo -n "hello world" | md5sum
# → 5eb63bbbe01eeed093cb22bb8f5acdc3  -

# macOS
echo -n "hello world" | md5
# → 5eb63bbbe01eeed093cb22bb8f5acdc3

# Hash a file
md5sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl md5
# → MD5(stdin)= 5eb63bbbe01eeed093cb22bb8f5acdc3

Często zadawane pytania

Czy MD5 jest nadal bezpieczny?
Nie jest bezpieczny w aplikacjach wrażliwych na bezpieczeństwo, takich jak podpisy cyfrowe, certyfikaty TLS czy przechowywanie haseł. Praktyczne ataki kolizyjne zostały zademonstrowane od 2004 roku, a ataki kolizji z wybranym prefiksem są teraz wykonalne w ciągu sekund na zwykłym sprzęcie. Do celów niezwiązanych z bezpieczeństwem — sumy kontrolne, klucze pamięci podręcznej, deduplikacja treści — algorytm pozostaje praktycznym i powszechnie obsługiwanym wyborem.
Jaka jest różnica między MD5 a SHA-256?
Algorytm MD5 produkuje 128-bitowy (32-znakowy hex) skrót i jest podatny na ataki kolizyjne. SHA-256 produkuje 256-bitowy (64-znakowy hex) skrót i nie ma znanych praktycznych ataków. SHA-256 jest mniej więcej o 30-40% wolniejszy niż starszy algorytm na tym samym sprzęcie, ale dodatkowy margines bezpieczeństwa czyni go domyślnym wyborem dla każdej aplikacji, gdzie weryfikacja integralności musi opierać się na odporności na celowe manipulacje.
Czy można odwrócić skrót MD5 z powrotem do oryginalnych danych?
Nie. Ta funkcja skrótu jest z założenia jednokierunkowa — odrzuca informacje podczas haszowania. Jednak dla krótkich lub popularnych danych wejściowych atakujący mogą używać tablic tęczowych (wstępnie obliczonych odwzorowań skrót-tekst jawny) lub metody brute force w celu znalezienia oryginalnych danych. Dlatego nigdy nie należy jej używać do przechowywania haseł. Zamiast tego należy użyć bcrypt, scrypt lub Argon2.
Dlaczego różne narzędzia czasami produkują różne skróty MD5 dla tego samego tekstu?
Najczęstszą przyczyną są różnice w kodowaniu. Algorytm operuje na bajtach, nie znakach. Ciąg 'hello' produkuje różne skróty zakodowane jako UTF-8 vs. UTF-16 vs. Latin-1. Innym częstym problemem są kończące znaki nowej linii: echo w większości powłok dołącza znak nowej linii (\n), chyba że użyjesz echo -n. Zawsze weryfikuj dokładne bajty, które są haszowane.
Ile czasu zajmuje obliczenie skrótu MD5?
Algorytm jest niezwykle szybki. Na nowoczesnym sprzęcie przetwarza dane z prędkością 3-6 GB/s na jednym rdzeniu CPU. GPU może obliczać miliardy sum kontrolnych na sekundę. Ta szybkość jest zaletą przy weryfikacji plików, ale wadą przy haszowaniu haseł, gdzie preferowane są wolniejsze algorytmy (bcrypt, Argon2) właśnie dlatego, że są odporne na ataki brute-force.
Czym jest kolizja MD5 i dlaczego ma znaczenie?
Kolizja występuje, gdy dwa różne dane wejściowe produkują ten sam skrót. W 2004 roku Xiaoyun Wang zademonstrował pierwszą praktyczną kolizję przeciwko MD5. Do 2012 roku złośliwe oprogramowanie Flame wykorzystało kolizję do sfałszowania certyfikatu podpisywania kodu Microsoft. Dziś kolizje identycznych prefiksów można obliczyć w mniej niż minutę. To sprawia, że algorytm jest nieodpowiedni dla każdej aplikacji opartej na odporności na kolizje, takich jak podpisy cyfrowe czy przypinanie certyfikatów.
Czy powinienem używać MD5 czy CRC32 do sum kontrolnych pliku?
Ta suma kontrolna jest lepszym wyborem niż CRC32 do weryfikacji integralności pliku. CRC32 to 32-bitowy kod wykrywania błędów zaprojektowany do wykrywania przypadkowego uszkodzenia podczas transmisji, nie celowego manipulowania. Jego mała przestrzeń wyjściowa oznacza, że kolizje są trywialnie łatwe do skonstruowania. MD5 zapewnia 128-bitowy skrót z znacznie silniejszą odpornością na przypadkowe kolizje. W scenariuszach z potencjalnym przeciwnikiem (weryfikacja pobrań z niezaufanych źródeł) użyj zamiast tego SHA-256.