MD5 Hash Hesaplayıcı nedir?
MD5 Hash Hesaplayıcı, girdiğiniz herhangi bir metnin 128 bitlik MD5 mesaj özetini hesaplar. MD5 (Message-Digest Algorithm 5, RFC 1321'de tanımlanır), uzunluğu ne olursa olsun bir girdiyi alır ve sabit boyutlu, 32 karakterlik onaltılık bir parmak izi üretir. Aynı girdi her zaman aynı hash'i verir; buna karşılık tek bir karakterin bile değişmesi tamamen farklı bir sonuç doğurur.
Nasıl kullanılır?
Metninizi giriş kutusuna yazın ya da yapıştırın ve gönderin. Hesaplayıcı, metninizi UTF-8 baytları olarak kodlar, MD5 algoritmasını uygular ve sonucu küçük harfli onaltılık özet olarak; girdinin karakter cinsinden uzunluğu ve UTF-8 bayt cinsinden boyutuyla birlikte döndürür. Kutuyu boş bırakırsanız, herkesçe bilinen boş dize hash'ini görürsünüz.
Formülün açıklaması
MD5 bir Merkle–Damgård yapısıdır.
$$\text{MD5}\!\left(\text{Text}\right) = \text{Hex}_{128}\big(A \Vert B \Vert C \Vert D\big)$$
Mesaj önce tek bir 0x80 baytıyla, ardından sıfırlarla, uzunluğu 64'e bölündüğünde 56 kalan verene kadar doldurulur; en sona ise orijinal bit uzunluğu 64 bitlik little-endian değer olarak eklenir. Doldurulan mesaj 512 bitlik bloklara ayrılır ve her blok, dört tur boyunca 64 işlemde; doğrusal olmayan fonksiyonlar, sin üzerinden türetilen adım sabitleri ve sola döndürmeler kullanılarak işlenir. Dört adet 32 bitlik durum sözcüğü (\(A\), \(B\), \(C\), \(D\)) sabit başlangıç değerleriyle ilklendirilir ve her blokta güncellenir; bunların little-endian olarak birleştirilmiş son hâli özeti oluşturur.
Örnek üzerinden
Boş dize ("") sıfır bayt içerir. Doldurma işleminden sonra tek bir 512 bitlik blok hâline gelir ve MD5 şu sonucu verir: d41d8cd98f00b204e9800998ecf8427e. "hello" metni (5 bayt) ise 5d41402abc4b2a76b9719d911017c592 olarak hash'lenir.
Sıkça sorulan sorular
MD5 güvenli mi? Hayır. MD5 kriptografik açıdan kırılmıştır; çakışmalar (collision) kolayca üretilebilir. Onu yalnızca sağlama (checksum) ve güvenlikle ilgisi olmayan parmak izleri için kullanın; parolalar ya da imzalar için asla kullanmayın.
Bayt sayısı neden karakter sayısından farklı? ASCII dışı karakterler UTF-8'de birden fazla bayt kaplar; bu nedenle 3 karakterlik bir emoji dizesi birkaç bayt tutabilir.
Büyük/küçük harf fark eder mi? Evet. "Hello" ve "hello" tamamen farklı hash'ler üretir.