MD5 Özeti
Ücretsiz çevrimiçi MD5 özet aracı. Metin/dosya/toplu/HMAC-MD5 modları, UTF-8/Latin1, büyük harf, 8 karakter gruplama. ⚠️ MD5 tehlikede — parola depolama için KULLANMAYIN.
Ücretsiz çevrimiçi MD5 özet aracı. Metin/dosya/toplu/HMAC-MD5 modları, UTF-8/Latin1, büyük harf, 8 karakter gruplama. ⚠️ MD5 tehlikede — parola depolama için KULLANMAYIN.
MD5 genellikle dosya bütünlüğü kontrolü (ör. indirme doğrulaması), hızlı özet oluşturma, eski sistem uyumluluğu, önbellek anahtarları ve güvenlik dışı senaryolarda veri tekilleştirme için kullanılır. MD5 128 bit (32 onaltılık karakter) üretir ve aşırı hızlıdır, kritik olmayan doğrulama senaryoları için uygundur.
MD5 128 bit (32 hex) üretir, aşırı hızlıdır ancak tehlikededir; SHA-256 256 bit (64 hex) üretir, daha yavaştır ancak pratik çakışma saldırıları yoktur ve kritik uygulamalar için tercih edilir.
SHA-256 AracıMD5 aşırı hızlıdır — modern GPU'lar saniyede milyarlarca özet hesaplayabilir ve gökkuşağı tabloları yaygın parolaları anında kırar. Parola depolama için bcrypt, scrypt veya Argon2 kullanın.
Parola ÜreticiGüvenlik için kesinlikle HAYIR (dijital imzalar, parolalar, TLS). Ancak güvenlik dışı uygulamalar için (dosya bozulması kontrolü, tekilleştirme, önbellek anahtarları) MD5 hala uygundur, çünkü saldırganların çakışma oluşturma teşviki yoktur.
MD5 tek yönlü bir fonksiyondur ve matematiksel olarak tersine çevrilemez, ancak gökkuşağı tabloları ve kaba kuvvet zayıf parolaları saniyeler içinde kurtarabilir. Bu nedenle MD5 asla parola depolama için kullanılmamalıdır.
Hayır. Araç parçalı artımlı okuma kullanır — dosyalar tamamen belleğe yüklenmez, bu nedenle çok gigabaytlık dosyalar bile duyarlı bir arayüzle düzgün işlenir.
HMAC-MD5, gizli bir anahtar gerektiren anahtarlı bir özettir. Düz MD5 tehlikede olsa da, HMAC-MD5 anahtar bilinmediğinde güvenli kalır (ancak HMAC-SHA256'ya geçiş önerilir).
HMAC ÜreticiMD5 (Message-Digest Algorithm 5), Ronald Rivest tarafından 1991'de (RFC 1321) tasarlanan, rastgele girdiden sabit 32 karakterlik onaltılık bir özet üreten 128 bitlik bir özet fonksiyonudur. Bir zamanlar dijital imzalar, sertifika doğrulama ve parola depolama için yaygın olarak kullanılan MD5, 2004'te Wang vd.'nin çakışma saldırısıyla tehlikeye girdi ve Flame kötü amaçlı yazılımı 2008'de güvenilir bir CA sertifikasını taklit etmek için MD5 çakışmalarını kötüye kullandı.
**Güvenlik Durumu**: NIST, MD5'i SP 800-131A'da (2011) dijital imzalar için resmen reddetti. Ancak MD5, güvenlik dışı senaryolarda faydalı olmaya devam ediyor: rastgele bozulmaya karşı dosya bütünlüğü kontrolü, veri tekilleştirme ve önbellek anahtarları. Ana soru: bir saldırgan çakışma oluşturmaktan fayda sağlar mı? Sağlamazsa, MD5'in hızı bir avantajdır.
**Parola depolama için MD5'i ASLA kullanmayın**: MD5 aşırı hızlıdır (GPU'da saniyede milyarlarca özet), bu da yaygın parolaların kaba kuvvetle anında kırılmasını sağlar. Parola depolama bcrypt, scrypt veya Argon2 kullanmalıdır — kaba kuvveti uygulanamaz kılan, ayarlanabilir maliyet faktörlerine sahip yavaş özetler.
**HMAC-MD5 hala güvenlidir**: düz MD5 tehlikede olsa da, HMAC-MD5 (anahtarlı Hash tabanlı Mesaj Kimlik Doğrulama Kodu) anahtar bilinmediğinde güvenli kalır, çünkü HMAC yapısı temel özetin çakışma direncine doğrudan bağlı değildir. Yine de HMAC-SHA256'ya geçiş önerilir.
Araç saf JavaScript MD5 uygulaması kullanır (Web Crypto API artık MD5'i desteklemiyor). Tüm hesaplamalar tarayıcınızda yerel olarak yapılır — dosyalar parçalı artımlı okuma kullanır ve asla sunuculara yüklenmez.
| Algoritma | Çıktı Bitleri | Hex Uzunluğu | Güvenlik | Hız | Önerilen Kullanım |
|---|---|---|---|---|---|
MD5 | 128 bit | 32 karakter | ❌ Tehlikede (çakışmalar/öngörüntü) | Aşırı hızlı | Dosya sağlama toplamları, tekilleştirme, önbellek anahtarları |
SHA-1 | 160 bit | 40 karakter | ❌ Çakışmalar (2017) | Hızlı | Git, eski sistem uyumluluğu |
SHA-256 | 256 bit | 64 karakter | ✅ Güvenli | Orta | Dijital imzalar, sertifikalar, blok zinciri |
SHA-512 | 512 bit | 128 karakter | ✅ Güvenli | Hızlı (64-bit) | Yüksek güvenlik senaryoları, anahtar türetme |
bcrypt | - | 60 karakter | ✅ Parola özelinde | Yavaş (ayarlanabilir) | Parola depolama |
| Yıl | Olay | Etki |
|---|---|---|
1991 | Ron Rivest MD5'i tasarlar (RFC 1321) | MD4'ün yerine geçer ve standart özet algoritması olur |
1996 | MD5'te ilk sahte çakışma kusuru keşfedildi | Akademik topluluk endişelerini dile getirir |
2004 | Wang Xiaoyun'un ekibi MD5 çakışma saldırısını gösterir | MD5 dijital imza güvenliği tamamen kırıldı |
2008 | Flame kötü amaçlı yazılımı MD5 çakışması yoluyla CA sertifikası sahteciliği yapar | NIST, MD5'i dijital imzalar için resmen reddeder |
2011 | NIST SP 800-131A, MD5'i güvenlik amaçları için resmen yasaklar | ABD hükümet sistemleri MD5'i aşamalı olarak kaldırır |
2024 | Yeni öngörüntü saldırısı makalesi yayınlandı | MD5'in son savunma hattı (öngörüntü direnci) kırıldı |
// 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")