Hashing Nedir?

İngilizce: Hashing

Hashing, veriyi sabit uzunluklu özet değere çeviren tek yönlü işlemdir; parola saklama ve bütünlük kontrolünde kullanılır.

Hashing Nedir?

Hashing, herhangi uzunluktaki veriden sabit uzunlukta bir özet değer üretme işlemidir. Aynı girdi aynı hash değerini üretir; girdideki küçük bir değişiklik ise tamamen farklı bir sonuç oluşturmalıdır.

Hashing şifreleme değildir. Şifrelemede veri anahtarla geri çözülebilir; güvenli hash fonksiyonlarında amaç geri dönüştürülemeyen bir özet üretmektir. Bu yüzden parola saklama, dosya bütünlüğü ve imza sistemlerinde farklı roller üstlenir.

Nasıl Çalışır?

SHA-256 gibi genel amaçlı hash fonksiyonları dosya veya mesaj bütünlüğü için kullanılır. Parola saklamada ise hızlı hash yeterli değildir; saldırganlar çok sayıda tahmini kısa sürede deneyebilir. Bu nedenle bcrypt, Argon2 veya PBKDF2 gibi yavaşlatılmış ve salt kullanan parola hash algoritmaları tercih edilir.

Salt, aynı parolaya sahip iki kullanıcının aynı hash değerini üretmesini engeller. Pepper ise uygulama tarafında saklanan ek gizli değer olarak kullanılabilir, ancak anahtar yönetimi dikkat ister.

İş Dünyasında Kullanımı

Hashing, kullanıcı parolalarını düz metin tutmamak, dosya indirmelerinde bozulmayı kontrol etmek, webhook imzası doğrulamak ve veri eşleştirmede hassas değerleri maskelemek için kullanılır. Yanlış algoritma seçimi, özellikle parola sızıntılarında riski ciddi şekilde artırır.

bcrypt parola saklama için özel tasarlanmış seçeneklerden biridir. Şifreleme ile karıştırılmamalıdır; şifreleme gizli veriyi geri okumak gerektiğinde, hashing ise doğrulama veya bütünlük gerektiğinde kullanılır.