Blog Yazısı

C# ile Veri Özetleme (Hashing): MD5 Ne İşe Yarar, Ne Zaman Kullanılmamalı?

C# ile Veri Özetleme (Hashing): MD5 Ne İşe Yarar, Ne Zaman Kullanılmamalı?

Hashing (özetleme), herhangi bir uzunluktaki veriyi sabit uzunlukta, geri döndürülemez bir çıktıya dönüştürme işlemidir. MD5 (Message Digest 5), 128 bit'lik (16 byte) bir özet üreten, 1990'ların başından beri yaygın kullanılan bir hash algoritmasıdır. .NET'te MD5 kullanmak oldukça basittir: System.Security.Cryptography ad alanındaki MD5.Create() metoduyla bir örnek oluşturulur, ardından ComputeHash() metoduna byte dizisi verilerek özet elde edilir.

using (var md5 = MD5.Create()) { byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(girdi)); string ozet = Convert.ToHexString(hash); } Bu kod parçası bir metni MD5 ile özetleyip onaltılık (hex) string'e çevirir. Dosya bütünlüğü kontrolü (checksum) gibi güvenlik kritik olmayan senaryolarda MD5 hâlâ hızlı ve pratik bir seçenektir; örneğin bir dosyanın indirme sırasında bozulup bozulmadığını anlamak için iki MD5 özetini karşılaştırmak yeterlidir.

Ancak MD5, parola saklama gibi güvenlik kritik alanlarda kullanılmamalıdır. Algoritmanın çarpışma (collision) zafiyetleri kriptografik olarak kırılmış kabul edilmesine yol açtı; modern donanımlarla milyarlarca MD5 özeti saniyeler içinde hesaplanabiliyor, bu da kaba kuvvet (brute-force) ve gökkuşağı tablosu (rainbow table) saldırılarını pratik hale getiriyor. Salt (tuz) eklenmeden kullanılan bir MD5 özeti, yaygın parolalar için hazır tablolardan saniyeler içinde çözülebilir.

Parola, kişisel veri veya token gibi hassas bilgilerin saklanması gerektiğinde MD5 yerine özel olarak bu amaç için tasarlanmış, yavaş çalışan ve salt kullanan algoritmalar tercih edilmelidir: PBKDF2, bcrypt veya Argon2. .NET'te Rfc2898DeriveBytes sınıfı PBKDF2 tabanlı bir uygulama sunar. Özetle: MD5, checksum gibi güvenlik dışı senaryolarda hâlâ kullanılabilir; ancak parola, KVKK kapsamındaki kişisel veri veya kimlik doğrulama token'ları gibi hassas veriler için asla tercih edilmemelidir.

← Bloga dön

Son yazılar