# Şifreleme vs Hashing

Adres: https://softwaredictionary.org/tr/karsilastirma/encryption-vs-hashing
Son güncelleme: 2026-09-30

Kısaca: Şifreleme veriyi çözülebilecek şekilde bir anahtarla karıştırır; hashing ise geri çevrilemeyen, sabit uzunlukta bir parmak izi üretir; parolalar için idealdir.

## Şifreleme (encryption) ile hashing arasındaki fark nedir?

Şifreleme, okunabilir veriyi (düz metin, plaintext) bir algoritma ve bir anahtarla okunamaz şifreli metne (ciphertext) dönüştürür; doğru anahtara sahip olan herkes onu geri çevirebilir. Hashing ise veriyi tek yönlü bir fonksiyondan geçirir ve her zaman sabit boyutlu bir çıktı üretir; buna hash ya da özet (digest) denir, SHA-256'nın 256 bitlik sonucu gibi.

Temel fark geri döndürülebilirliktir ve amaçlarından doğar. Şifreleme, mesajlar, yedekler ya da kart numaraları gibi tekrar okumanız gereken verileri korur; bu yüzden yetkili taraflar için geri döndürülebilir olmalıdır. Hashing ise verinin eşleştiğini ya da değişmediğini kanıtlar: aynı girdi her zaman aynı hash'i üretir, ama girdiyi ondan geri elde edemezsiniz.

Çoğu zaman birlikte kullanılırlar. HTTPS'nin arkasındaki güvenlik katmanı olan TLS trafiği şifreler, ama anahtarları türetmek ve el sıkışma mesajlarını doğrulamak için hash fonksiyonlarına dayanır; dijital imzalar da bir belgeyi özel anahtarla imzalamadan önce hash'ler. Parola saklama, çalınan hash'lerin kırılmasını zorlaştırmak için Argon2, scrypt ya da bcrypt gibi özel, yavaş ve tuzlu (salted) hash'ler kullanır.

Sık yapılan bir yanlış, Base64 gibi kodlamanın şifreleme olduğu ya da parolaları düz SHA-256 ile hash'lemenin yeterli olduğu düşüncesidir. Base64, anahtar olmadan herkes tarafından geri çevrilebilir ve hızlı hash'ler modern GPU'larda saniyede milyarlarca denemeyle tahmin edilebilir; bu yüzden parolalar için benzersiz bir tuzla kasten yavaş bir hash gerekir.

| Özellik | Şifreleme | Hashing |
| --- | --- | --- |
| Yön | İki yönlü: doğru anahtarla çözülür | Tek yönlü: geri döndürülemez |
| Anahtar | Paylaşılan bir anahtar ya da açık/özel anahtar çifti gerektirir | Anahtar gerekmez; HMAC varyantları gizli bir anahtar ekler |
| Çıktı boyutu | Girdinin boyutuyla birlikte büyür | SHA-256'da 256 bit gibi sabit uzunluk |
| Aynı girdi | Her seferinde farklı şifreli metin verebilir | Her zaman aynı hash'i verir |
| Amaç | Veriyi gizli tutmak | Bütünlüğü doğrulamak ve değerleri karşılaştırmak |
| Tipik kullanımlar | HTTPS, disk şifreleme, mesajlaşma, yedekler | Parola saklama, sağlama toplamları (checksum), imzalar, tekilleştirme |
| Yaygın algoritmalar | AES, ChaCha20, RSA, eliptik eğri şemaları | SHA-256, SHA-3, BLAKE3; parolalar için Argon2 ve bcrypt |

## Şifreleme şu durumlarda doğru seçim

- Özgün veriyi daha sonra tekrar okumanız gerekiyor.
- Veri, mesajlar ya da dosyalar gibi iletim sırasında veya durağan hâlde gizli kalmalı.
- İçeriğe yalnızca anahtarı olan kişiler veya sistemler erişebilmeli.

## Hashing şu durumlarda doğru seçim

- Parolalarda olduğu gibi yalnızca bir değerin eşleştiğini denetlemeniz gerekiyor.
- Bir dosyanın ya da mesajın değişip değişmediğini tespit etmek istiyorsunuz.
- Aramalar ya da tekilleştirme için kısa, sabit boyutlu bir parmak izine ihtiyacınız var.

## Sık sorulan sorular

**Bir hash çözülebilir mi?**

Hayır. Hash fonksiyonu tek yönlüdür, bu yüzden çözülecek bir şey yoktur. Saldırganlar bunun yerine girdileri tahmin eder ve hash'leri karşılaştırır; bu yüzden zayıf ya da tuzsuz parola hash'leri yine de kırılabilir.

**Parolalar şifrelenmeli mi, hash'lenmeli mi?**

Hash'lenmeli; hem de Argon2, scrypt veya bcrypt gibi parolalar için tasarlanmış yavaş ve tuzlu bir algoritmayla. Şifrelenmiş parolaların hepsi, anahtar sızarsa bir anda ifşa olabilir.

**Base64 şifreleme midir?**

Hayır. Base64, ikili verinin metin olarak güvenle gönderilmesini sağlayan bir kodlamadır ve herkes onu anahtar olmadan çözebilir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
