MD5 Hash Generator
Generera MD5-hashvärde från vilken text som helst
Inmatningstext
MD5-hash
MD5-hashvärdet visas här…
Vad är MD5-hashning?
MD5 (Message-Digest Algorithm 5) är en kryptografisk hashfunktion som producerar ett fast 128-bitars (16 byte) sammandrag från vilken inmatning som helst, oavsett storlek. Publicerad 1992 av Ronald Rivest som RFC 1321, utformades MD5 som en snabbare efterföljare till MD4 och blev snabbt en av de mest använda hashfunktionerna på internet. Algoritmen bearbetar inmatning i 512-bitarsblock genom fyra rundor med 16 operationer vardera, med en annan icke-linjär funktion per runda, för att producera ett hexadecimalt fingeravtryck på 32 tecken.
En hashfunktion är en enkelriktad omvandling: givet en inmatning kan du beräkna hashen omedelbart, men givet bara hashen kan du inte återskapa den ursprungliga inmatningen. Även en enda bitsändring i inmatningen producerar ett helt annat sammandrag — en egenskap som kallas lavinaeffekten. MD5 avbildar ett oändligt inmatningsutrymme till ett fast 128-bitars utmatningsutrymme, så kollisioner (två olika inmatningar som producerar samma hash) är matematiskt garanterade att existera, men en säker hashfunktion gör det beräkningsmässigt orimligt att hitta dem.
Sedan 2004 har forskare demonstrerat praktiska kollisionsattacker mot MD5, vilket innebär att algoritmen inte längre anses säker för digitala signaturer, certifikat eller sammanhang där kollisionsmotstånd krävs. MD5 används dock fortfarande brett för icke-säkerhetsändamål: verifiering av filintegritet efter nedladdningar, generering av cachenycklar, deduplicering av innehåll och skapande av deterministiska identifierare från strängar. För dessa användningsfall gör algoritmens hastighet och utbredda biblioteksstöd det till ett praktiskt val. År 2008 publicerade Marc Stevens och kollegor en chosen-prefix-kollisionsattack, vilket innebär att en angripare kan skapa två dokument med godtyckligt valda prefix som delar samma sammandrag. Tekniken demonstrerades vid Chaos Communication Congress 2008 genom att konstruera ett oseriöst certifikatutfärdarcertifikat. Flame-skadeprogrammet 2012 utnyttjade sedan chosen-prefix-kollisioner för att förfalska ett Microsoft-kodsigneringscertifikat, vilket gjorde det möjligt för skadlig kod att utge sig för ett legitimt Windows Update-paket. Dessa verkliga utnyttjanden bekräftade att algoritmen är kryptografiskt bruten för förtroendeankrad användning och bör inte förlitas på när en motståndare kan påverka de inmatningar som hashas.
Varför använda den här MD5-generatorn?
Generera MD5-hashar omedelbart utan att installera något eller skriva kod. Klistra in din text och få det 32-tecken långa hexsammandraget i realtid.
MD5-användningsfall
MD5 jämfört med andra hashalgoritmer
MD5 är den snabbaste och kortaste av de vanliga hashalgoritmerna, men erbjuder de svagaste säkerhetsgarantierna. Tabellen nedan jämför sammandragsstorlekar, standarder och lämpliga användningsfall för varje algoritm.
| Algoritm | Sammandragsstorlek | Hexlängd | Standard | Bäst för |
|---|---|---|---|---|
| MD5 | 128 bits | 32 hex chars | 1992 / RFC 1321 | Checksums, non-security fingerprints |
| SHA-1 | 160 bits | 40 hex chars | 1995 / RFC 3174 | Legacy git commits (being replaced) |
| SHA-256 | 256 bits | 64 hex chars | 2001 / FIPS 180-4 | TLS certificates, blockchain, JWTs |
| SHA-384 | 384 bits | 96 hex chars | 2001 / FIPS 180-4 | Government systems, higher security margin |
| SHA-512 | 512 bits | 128 hex chars | 2001 / FIPS 180-4 | Digital signatures, HMAC with large keys |
| SHA-3 | 256 bits | 64 hex chars | 2015 / FIPS 202 | Post-quantum readiness, backup standard |
| BLAKE3 | 256 bits | 64 hex chars | 2020 | High-performance checksums, Merkle trees |
Hur MD5 fungerar
MD5 bearbetar inmatning genom en Merkle-Damgard-konstruktion: meddelandet vadderas till en multipel av 512 bitar, delas upp i block och varje block matas genom fyra rundor med 16 bitvisa operationer som blandar inmatningen med förberäknade sinus-härledda konstanter. Resultatet är ett 128-bitarstillstånd som blir det slutliga sammandraget.
Varje runda tillämpar en distinkt icke-linjär hjälpfunktion på tre av de fyra 32-bitarstillståndsvorden (A, B, C, D). Runda 1 använder F(B,C,D) = (B AND C) OR (NOT B AND D) — en bitvis villkorlig väljare. Runda 2 använder G(B,C,D) = (B AND D) OR (C AND NOT D) — en kompletterande väljare. Runda 3 använder H(B,C,D) = B XOR C XOR D — en paritetsfunktion. Runda 4 använder I(B,C,D) = C XOR (B OR NOT D) — en asymmetrisk kombinerare. Dessa fyra funktioner säkerställer att varje bit i inmatningen påverkar utmatningssammandraget och producerar lavinaeffekten som gör att små inmatningsförändringar orsakar stora, oförutsägbara förändringar i den resulterande hashen.
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)
Algoritmen fortskrider i fem steg: (1) lägg till en 1-bit, sedan nollor tills meddelandelängden är 448 mod 512; (2) lägg till den ursprungliga meddelandelängden som ett 64-bitars little-endian heltal; (3) initialisera fyra 32-bitarstillståndsvariabler (A, B, C, D) med fasta konstanter; (4) bearbeta varje 512-bitarsblock genom 64 operationer med hjälp av fyra icke-linjära funktioner (F, G, H, I), en per runda med 16 operationer; (5) lägg till det resulterande tillståndet till det löpande totalet och mata ut den slutliga 128-bitarshashen i little-endian byteordning.
Kodexempel
Hur man genererar MD5-hashar i populära språk och miljöer. Observera att MD5 inte är tillgängligt i webbläsarens Web Crypto API — använd ett bibliotek eller 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"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())package main
import (
"crypto/md5"
"fmt"
)
func main() {
data := []byte("hello world")
hash := md5.Sum(data)
fmt.Printf("%x\n", hash)
// → 5eb63bbbe01eeed093cb22bb8f5acdc3
}# 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