Hashing Nedir? Hash Fonksiyonlarının Tam Açıklaması
Hızlı Yanıt
Hashing, herhangi bir input'i one-way fonksiyon ile fixed-size output'a (hash) dönüştürür. Aynı input her zaman aynı hash üretir; farklı input'lar farklı hash üretir (collision resistance). Ücretsiz Hash Generator ile tarayıcınızda SHA-256, SHA-1 ve MD5 hash hesaplayın.
giriiş
Hashing, herhangi bir boyuttaki input verisini hash veya digest denilen fixed-size output'a dönüştürme işlemidir. Hash fonksiyonu, bu dönüştürmeyi yapan algoritmadır. Kriptografik hash fonksiyonları, veri bütünlüğü, parola saklama ve dijital imzalar için yararlı özel özelliklere sahiptir. Şifrelemenin aksine, hashing one-way'dir —input'i hash'ten geri alamazsınız.
Adım adım
-
Karma işlevi özelliklerini anlama
Kriptografik karma fonksiyonlarının dört temel özelliği vardır: (1) Deterministik — aynı girdi her zaman aynı çıktıyı verir. (2) Hızlı hesaplama. (3) Tek yönlü — karmadan girdiyi kurtarmak mümkün değil. (4) Çarpışmaya dayanıklı — aynı karma değere sahip iki farklı girdi bulmak mümkün değildir. (5) Çığ etkisi — küçük girdi değişikliği, çıktıyı büyük ölçüde değiştirir.
-
Ortak algoritmaları öğrenin
SHA-256 (256 bit çıkış, 64 hex karakter) Bitcoin, TLS ve dijital imzalarda kullanılan modern standarttır. SHA-512 daha güvenlidir ancak daha yavaştır. SHA-3 en yeni ailedir. MD5 (128-bit) ve SHA-1 (160-bit) çarpışma direnci açısından bozulmuştur ve güvenlik amacıyla kullanılmamalıdır.
-
Hashing'i şifrelemeden ayırt etme
Hashing tek yönlüdür; bunu tersine çeviremezsiniz. Şifreleme iki yönlüdür; bir anahtarla şifreyi çözebilirsiniz. Karma, bütünlük ve doğrulama içindir; şifreleme gizlilik içindir. Kurtarmanız gereken verileri depolamak için asla karma kullanmayın.
-
Hashing'i doğru kullanın
Veri bütünlüğü için verilere karma işlemi uygulayın ve iyi olduğu bilinen bir karma işlemiyle karşılaştırın. Parolalar için, çok hızlı ve kaba kuvvete karşı savunmasız olan ham SHA-256 değil, benzersiz bir tuza sahip, yavaş bir anahtar genişletme karma değeri (bcrypt, scrypt, Argon2) kullanın.
Örnekler
SHA-256 karma
Giriş: Hello, World!
Çıkış: dffd6021bb2bd5b0af676290809ec008dfca50a8d29e6ac0a52c2d7e9f0a3b0c
Çığ etkisi
Giriş: Selam Dünya! (Merhaba Dünya'ya karşı mı?)
Çıkış: Tek karakter değişikliğine rağmen tamamen farklı hash
MD5 karma (bozuk, yalnızca eski)
Giriş: Hello, World!
Çıkış: ed0760733d7505e9ceacf8af225020ac
Yaygın Sorunlar
- Güvenlik için MD5 veya SHA-1 kullanılması — her ikisi de çarpışmaya karşı dayanıklılık için bozulmuştur. Herhangi bir güvenlik amacıyla SHA-256 veya daha güçlü bir sürüm kullanın.
- Şifreleri tuz olmadan karma hale getirmek — aynı şifreler aynı karmaları üreterek gökkuşağı tablo saldırılarına olanak tanır. Benzersiz bir tuzla bcrypt, scrypt veya Argon2 kullanın.
- Hashing'i şifrelemeyle karıştırmak: Hashing tek yönlüdür (geri döndürülemez); şifreleme iki yönlüdür (bir anahtarla şifresi çözülebilir).
- Karma değerlerin benzersiz olmasını beklemek — çarpışmalar teorik olarak mümkündür ancak güvenli algoritmalar için pratik olarak mümkün değildir (SHA-256 2^256 olası çıktıya sahiptir).
İpuçları
- Veri bütünlüğü doğrulaması, içerik adresleme ve dijital imzalar için SHA-256 kullanın.
- Parola depolamak için bcrypt, scrypt veya Argon2 kullanın; ham değil SHA-256. Bu algoritmalar kaba kuvvete direnmek için anahtar genişletmeye sahiptir.
- Karma işlemi tek yönlüdür; asla kurtarmanız gereken verileri depolamak için kullanmayın. Gizli veriler için şifreleme kullanın.
- Tarayıcınızda SHA-256 ve diğer karmaları anında hesaplamak için Hash Oluşturucumuzu kullanın.