Ana içeriğe geç

Hashing

Türkçe karşılığı
özetleme
Okunuşu
heşing

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/hashing

Kısaca

Hashing, bir girdiyi tek yönlü bir fonksiyonla sabit uzunlukta bir değere dönüştürmektir; veri bütünlüğünü doğrulamaya ve parolaları güvenle saklamaya yarar.

Hashing nedir?

Bir hash fonksiyonu, parola, dosya veya mesaj gibi herhangi bir boyuttaki girdiyi alır ve hash ya da özet (digest) adı verilen sabit boyutlu bir çıktı üretir. Aynı girdi her zaman aynı hash'i verir, girdideki küçücük bir değişiklik tamamen farklı bir hash üretir ve hash'ten girdiye geri dönmek pratikte imkânsız olmalıdır.

Hashing; dosyaların değiştirilmediğini doğrulamak, içeriği tanımlamak (Git her commit'i bir hash ile adlandırır), hash tabloları gibi veri yapıları kurmak ve parolaları saklamak için kullanılır. Bütünlük kontrolleri ve dijital imzalar için SHA-256 gibi hızlı kriptografik hash'ler kullanılır; MD5 ve SHA-1 gibi eskileri güvenlik amaçlı kullanım için kırılmıştır ve kaçınılmalıdır.

Parolalar özel muamele ister. Hızlı bir hash yerine Argon2id, bcrypt veya scrypt gibi yavaş ve salt'lı bir parola hashleme algoritması kullanın. Salt, hash'lemeden önce her parolaya eklenen rastgele bir değerdir; böylece aynı parolalar farklı hash'ler üretir. Kasıtlı yavaşlık ise çalınmış bir veritabanından parola tahmin etmeyi saldırganlar için çok pahalı hâle getirir.

Hashing sıklıkla şifrelemeyle karıştırılır. Şifreleme iki yönlüdür: bir anahtarla şifrelenen veri doğru anahtarla çözülebilir. Hashing tek yönlüdür; bu yüzden sunucu, girişi girilen parolayı hash'leyip saklanan hash'le karşılaştırarak kontrol eder, asla orijinal parolayı geri elde ederek değil.

Bir bakışta

Üç girdi SHA-256 hash fonksiyonundan geçer: “hello”, tek harfi değişmiş “hellO” ve uzun bir cümle. Her biri 64 karakterlik bir hash olarak çıkar; neredeyse aynı iki kelime bambaşka hash'ler alır ve hiçbir hash'ten girdisine geri dönülemez.SHA-256hash fonksiyonu"hello"girdi2cf24dba…938b982464 onaltılık karakter"hellO"tek harf değişti04a6f55f…c706b770bambaşka"The quick brown fox…"daha uzun bir girdid7a8fbb3…37c9e592yine 64 karaktertek yönlü: girdiye geri dönülmez
Aynı girdi, aynı hash; küçücük bir değişiklik, bambaşka bir hash. Her boyutta girdi girer, sabit uzunlukta çıktı çıkar ve geri dönüş yoktur.

Önemli noktalar

  • Hash fonksiyonu, herhangi bir girdiyi sabit uzunlukta bir çıktıya dönüştürür.
  • Aynı girdi her zaman aynı hash'i üretir.
  • Hashing tek yönlüdür; şifreleme ise anahtarla geri döndürülebilir.
  • Bütünlük kontrolleri için MD5 veya SHA-1 değil, SHA-256 veya daha güçlüsünü kullanın.
  • Parolaları Argon2id veya bcrypt gibi salt'lı, yavaş bir algoritmayla saklayın.

Örnek

Güvensiz ve güvenli parola saklama (Node.js)javascript
import { createHash } from "node:crypto";
import bcrypt from "bcrypt";

// Unsafe: fast and unsalted, so leaked hashes are easy to crack
const weak = createHash("sha256").update(password).digest("hex");

// Safe: bcrypt adds a random salt and is deliberately slow
const stored = await bcrypt.hash(password, 12);

// At login, compare the entered password with the stored hash
const ok = await bcrypt.compare(loginAttempt, stored);

Sık sorulan sorular

Hashing ile şifreleme arasındaki fark nedir?

Şifreleme geri döndürülebilirdir: doğru anahtara sahip herkes şifrelenmiş veriyi orijinal hâline çevirebilir. Hashing tek yönlüdür; orijinal girdi hash'ten geri elde edilemez. Bu da onu, veriyi sonradan okunmak üzere gizlemekten çok doğrulamak için uygun kılar.

Parola hashlemede salt nedir?

Salt, her parola için üretilen ve hash'lemeden önce parolayla birleştirilen rastgele bir değerdir. Aynı parolaların farklı hash'ler almasını sağlar ve rainbow table adı verilen önceden hesaplanmış arama tablolarını etkisiz kılar.

Bir hash geri çevrilebilir mi?

Güvenli bir hash matematiksel olarak geri çevrilemez, ancak saldırganlar girdileri tahmin edip hash'leyerek sonuçları karşılaştırabilir. Hızlı hash'lerle saklanan zayıf parolaların kolayca kırılmasının ve yavaş parola hashleme algoritmalarının var olmasının nedeni budur.

Sık karşılaştırılanlar

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar