Skrót MD5
Darmowe narzędzie do skrótów MD5 online. Tryby tekst/plik/wsadowy/HMAC-MD5, UTF-8/Latin1, wielkie litery, grupowanie po 8 znaków. ⚠️ MD5 jest skompromitowany — NIE używaj do przechowywania haseł.
Darmowe narzędzie do skrótów MD5 online. Tryby tekst/plik/wsadowy/HMAC-MD5, UTF-8/Latin1, wielkie litery, grupowanie po 8 znaków. ⚠️ MD5 jest skompromitowany — NIE używaj do przechowywania haseł.
MD5 jest zazwyczaj używany do sprawdzania integralności plików (np. weryfikacji pobrań), szybkiego generowania skrótów, kompatybilności ze starszymi systemami, kluczy pamięci podręcznej i deduplikacji danych w scenariuszach nie związanych z bezpieczeństwem. MD5 produkuje 128 bitów (32 znaki szesnastkowe) i jest ekstremalnie szybki, odpowiedni do niekrytycznych scenariuszy weryfikacji.
MD5 produkuje 128 bitów (32 hex), ekstremalnie szybki ale skompromitowany; SHA-256 produkuje 256 bitów (64 hex), wolniejszy ale bez praktycznych ataków kolizyjnych i preferowany do krytycznych zastosowań.
Narzędzie SHA-256MD5 jest ekstremalnie szybki — nowoczesne GPU mogą obliczać miliardy skrótów na sekundę, a tablice tęczowe błyskawicznie łamią powszechne hasła. Do przechowywania haseł używaj bcrypt, scrypt lub Argon2.
Generator hasełAbsolutnie NIE dla bezpieczeństwa (podpisy cyfrowe, hasła, TLS). Ale dla zastosowań nie związanych z bezpieczeństwem (sprawdzanie uszkodzeń plików, deduplikacja, klucze pamięci podręcznej) MD5 jest nadal odpowiedni, ponieważ atakujący nie mają motywacji do tworzenia kolizji.
MD5 jest funkcją jednokierunkową i matematycznie nie można go odwrócić, ale tablice tęczowe i brute force mogą odzyskać słabe hasła w ciągu sekund. Dlatego MD5 nigdy nie powinien być używany do przechowywania haseł.
Nie. Narzędzie wykorzystuje fragmentowe przyrostowe odczytywanie — pliki nie są ładowane w całości do pamięci, więc nawet wielogigabajtowe pliki są przetwarzane płynnie z responsywnym interfejsem.
HMAC-MD5 to kluczowy skrót wymagający tajnego klucza. Chociaż zwykły MD5 jest skompromitowany, HMAC-MD5 pozostaje bezpieczny, gdy klucz jest nieznany (chociaż zalecana jest migracja na HMAC-SHA256).
Generator HMACMD5 (Message-Digest Algorithm 5) to 128-bitowa funkcja skrótu zaprojektowana przez Ronalda Rivesta w 1991 roku (RFC 1321), która tworzy stały 32-znakowy szesnastkowy skrót z dowolnego wejścia. Kiedyś szeroko stosowany do podpisów cyfrowych, weryfikacji certyfikatów i przechowywania haseł, MD5 został skompromitowany przez atak kolizyjny Wanga i współpracowników w 2004 roku, a złośliwe oprogramowanie Flame wykorzystało kolizje MD5 do sfałszowania zaufanego certyfikatu CA w 2008 roku.
**Status bezpieczeństwa**: NIST oficjalnie odrzucił MD5 dla podpisów cyfrowych w SP 800-131A (2011). Jednak MD5 pozostaje przydatny w scenariuszach nie związanych z bezpieczeństwem: sprawdzanie integralności plików przed przypadkowym uszkodzeniem, deduplikacja danych i klucze pamięci podręcznej. Kluczowe pytanie: czy atakujący odniósłby korzyść z stworzenia kolizji? Jeśli nie, szybkość MD5 jest zaletą.
**NIGDY nie używaj MD5 do przechowywania haseł**: MD5 jest ekstremalnie szybki (miliardy skrótów/sekundę na GPU), co pozwala na natychmiastowe złamanie powszechnych haseł brute forcem. Przechowywanie haseł MUSI używać bcrypt, scrypt lub Argon2 — wolnych skrótów z konfigurowalnymi czynnikami kosztu, które sprawiają, że brute force jest niepraktyczny.
**HMAC-MD5 jest nadal bezpieczny**: chociaż zwykły MD5 jest skompromitowany, HMAC-MD5 (kod uwierzytelniania wiadomości oparty na skrócie z kluczem) pozostaje bezpieczny, gdy klucz jest nieznany, ponieważ konstrukcja HMAC nie zależy bezpośrednio od odporności bazowego skrótu na kolizje. Niemniej jednak zalecana jest migracja na HMAC-SHA256.
Narzędzie używa czystej implementacji MD5 w JavaScript (Web Crypto API nie obsługuje już MD5). Wszystkie obliczenia są wykonywane lokalnie w przeglądarce — pliki wykorzystują fragmentowe przyrostowe odczytywanie i nigdy nie są wysyłane na serwery.
| Algorytm | Bity wyjściowe | Długość Hex | Bezpieczeństwo | Szybkość | Zalecane zastosowanie |
|---|---|---|---|---|---|
MD5 | 128 bitów | 32 znaki | ❌ Skompromitowany (kolizje/preimage) | Ekstremalna | Sumy kontrolne plików, deduplikacja, klucze pamięci podręcznej |
SHA-1 | 160 bitów | 40 znaków | ❌ Kolizje (2017) | Szybki | Git, kompatybilność ze starszymi systemami |
SHA-256 | 256 bitów | 64 znaki | ✅ Bezpieczny | Średnia | Podpisy cyfrowe, certyfikaty, blockchain |
SHA-512 | 512 bitów | 128 znaków | ✅ Bezpieczny | Szybki (64-bit) | Scenariusze wysokiego bezpieczeństwa, wyprowadzanie kluczy |
bcrypt | - | 60 znaków | ✅ Specjalizowany dla haseł | Wolny (konfigurowalny) | Przechowywanie haseł |
| Rok | Wydarzenie | Wpływ |
|---|---|---|
1991 | Ron Rivest projektuje MD5 (RFC 1321) | Zastępuje MD4 i staje się standardowym algorytmem haszującym |
1996 | Odkryto pierwszą wadę pseudokolizji w MD5 | Społeczność akademicka wyraża obawy |
2004 | Zespół Wang Xiaoyun demonstruje atak kolizyjny na MD5 | Bezpieczeństwo podpisów cyfrowych MD5 całkowicie złamane |
2008 | Złośliwe oprogramowanie Flame fałszuje certyfikat CA poprzez kolizję MD5 | NIST oficjalnie odrzuca MD5 dla podpisów cyfrowych |
2011 | NIST SP 800-131A oficjalnie zakazuje MD5 dla celów bezpieczeństwa | Systemy rządowe USA wycofują MD5 |
2024 | Opublikowano nowy artykuł o ataku preimage | Ostatnia linia obrony MD5 (odporność na preimage) złamana |
// Note: Web Crypto API does NOT support MD5 (deprecated)
// Use SHA-256 instead for new projects
async function sha256(message) {
const msgBuffer = new TextEncoder().encode(message);
const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
return Array.from(new Uint8Array(hashBuffer)).map(b => b.toString(16).padStart(2,'0')).join('');
}
sha256('Hello World').then(console.log);
// MD5 in Node.js using crypto module
const crypto = require('crypto');
const md5 = crypto.createHash('md5').update('Hello World').digest('hex');
console.log(md5); // b10a8db164e0754105b7a99be72e3fe5import hashlib
text = 'Hello World'
md5_hash = hashlib.md5(text.encode('utf-8')).hexdigest()
print(md5_hash) # b10a8db164e0754105b7a99be72e3fe5
# File MD5 (chunked for large files)
def md5_file(filepath, chunk_size=8192):
md5 = hashlib.md5()
with open(filepath, 'rb') as f:
while chunk := f.read(chunk_size):
md5.update(chunk)
return md5.hexdigest()
# HMAC-MD5
import hmac
hmac_md5 = hmac.new(b'secret-key', b'Hello World', hashlib.md5).hexdigest()
print(hmac_md5)import java.security.MessageDigest;
import java.nio.charset.StandardCharsets;
public class MD5Example {
public static String md5(String input) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] hash = md.digest(input.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for (byte b : hash) sb.append(String.format("%02x", b));
return sb.toString();
}
public static void main(String[] args) throws Exception {
System.out.println(md5("Hello World"));
// b10a8db164e0754105b7a99be72e3fe5
}
}
// Note: Use SHA-256 for new code: MessageDigest.getInstance("SHA-256")