Hash (Özet) Nedir ve Ne İşe Yarar?
Hashleme (Hashing), herhangi bir boyuttaki veriyi (örneğin kısa bir şifreyi veya GB'larca büyüklükteki bir dosyayı) alıp, matematiksel bir algoritmadan geçirerek sabit uzunlukta, benzersiz bir karakter dizisine dönüştürme işlemidir.
Şifreleme (Encryption) vs Hashleme (Hashing)
Genellikle bu iki terim birbirine karıştırılır ancak amaçları tamamen farklıdır:
Şifreleme (Encryption)
Çift Yönlüdür. Şifrelenen veri, gizli bir anahtar (key) yardımıyla tekrar eski haline (orijinal metne) çevrilebilir. Veriyi A noktasından B noktasına güvenle taşımak için kullanılır (Örn: SSL, VPN, Mesajlaşma).
Hashleme (Hashing)
Tek Yönlüdür. Oluşturulan hash kodundan orijinal metin geri döndürülemez. Verinin değiştirilip değiştirilmediğini (bütünlüğünü) kontrol etmek ve parolaları veritabanında güvenle saklamak için kullanılır.
Algoritmalar Arasındaki Farklar
- MD5 (Message Digest 5): 128 bitlik bir hash üretir. Çok hızlıdır ancak günümüzde "Collision (Çakışma)" zafiyeti bulunduğu için parolaları saklamak için kesinlikle önerilmez. Genellikle indirilen bir dosyanın bozuk olup olmadığını kontrol etmek (Checksum) için kullanılır.
- SHA-256 (Secure Hash Algorithm): 256 bitlik bir hash üretir. ABD Ulusal Güvenlik Ajansı (NSA) tarafından tasarlanmıştır. Modern webin standartıdır; SSL sertifikalarında ve Bitcoin madenciliğinde kullanılır.
- Bcrypt: Kullanıcı parolalarını (şifrelerini) veritabanına kaydetmek için en iyi yöntemdir. Bilerek yavaş çalışacak şekilde tasarlanmıştır ki hackerlar saniyede milyarlarca deneme (Brute-Force) yapamasın. Ayrıca içine otomatik olarak "Salt (Tuz)" eklediği için aynı şifreyi iki kez bcrypt ile hashlerseniz sonuçlar birbirinden tamamen farklı çıkar.