İçeriğe geç
Şifreleme Algoritmaları

Hash Nedir? MD5, SHA-256 ve Dijital İmza

Güncellendi: Son kontrol: Eylül 2026 7 dk okuma

Kısaca cevap

Hash (özet) fonksiyonu, her boyuttaki veriyi sabit uzunlukta bir "parmak izine" dönüştüren tek yönlü bir işlemdir; bu parmak izine hash değeri denir ve şifreleme gibi anahtarla geri açılamaz. Dosyaların bozulup bozulmadığını kontrol etmek, şifreleri güvenli saklamak, dijital imza atmak ve blokzincirdeki kayıtları birbirine bağlamak için kullanılır. Bugün güvenlik gereken işlerde SHA-256 gibi SHA-2 ya da SHA-3 ailesi tercih edilir; MD5 ve SHA-1 çakışma saldırılarına karşı kırılmıştır.

Bu sayfada

Hash nedir, hash değeri ne demek?

Hash (Türkçede "özet") fonksiyonu, bir veriyi alıp ondan kısa ve sabit uzunlukta bir değer hesaplayan matematiksel işlemdir. Bu işlemin sonucuna hash değeri, hash kodu, özet ya da checksum denir. Hash değeri verinin parmak izi gibidir: aynı veri her zaman aynı değeri verir, veride tek bir bit değişirse değer tamamen başka çıkar. "Hashing" ise bu değeri hesaplama işleminin adıdır.

Hash fonksiyonu, girdisi ne kadar uzun olursa olsun her zaman aynı uzunlukta bir çıktı üretir. Tek bir kelimenin de, birkaç gigabaytlık bir dosyanın da SHA-256 özeti 256 bittir; onaltılık (hex) gösterimde 64 karakter eder.

Standart test örneği olan "abc" metninin özetleri şöyledir:

AlgoritmaÇıktı uzunluğu"abc" özeti
MD5128 bit (32 hex karakter)900150983cd24fb0d6963f7d28e17f72
SHA-1160 bit (40 hex karakter)a9993e364706816aba3e25717850c26c9cd0d89d
SHA-256256 bit (64 hex karakter)ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA-512512 bit (128 hex karakter)ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f

Bu tablodaki yaygın algoritmalar içinde en uzun çıktıyı SHA-512 üretir; SHA-3 ailesindeki SHA3-512 de 512 bitlik çıktı verir. Uzun çıktı daha fazla güvenlik payı sağlar, ama günlük işlerin çoğunda SHA-256 yeterlidir.

Bu değerleri MD5 ve SHA-256 hash hesaplama aracına "abc" yazarak kendiniz de görebilirsiniz. Hesaplama tarayıcınızda yapılır; yazdığınız metin sunucuya gönderilmez.

Hash ile şifreleme arasındaki fark

Şifrelemede amaç veriyi gizlemek ve daha sonra geri açmaktır. Doğru anahtara sahip olan kişi şifreli metni çözerek asıl veriye ulaşır. Şifreleme simetrik (tek anahtar) veya asimetrik (açık ve özel anahtar çifti) olabilir.

Hash'te anahtar yoktur ve işlem geri alınamaz. Özetten asıl veriyi hesaplamanın bir yolu bulunmaz; yalnızca aynı veriyi tekrar özetleyip sonuçları karşılaştırabilirsiniz. Bu yüzden sık duyulan "MD5 şifreleme" ifadesi teknik olarak yanlıştır; doğrusu "MD5 özeti" ya da "MD5 hash'i"dir.

Hash fonksiyonunun özellikleri nelerdir?

Kriptografik hash fonksiyonlarından beklenen başlıca özellikler şunlardır:

  • Belirleyicilik: Aynı girdi her zaman aynı çıktıyı verir.
  • Çığ etkisi: Girdideki küçük bir değişiklik çıktıyı tamamen değiştirir. Örneğin "abd" metninin SHA-256 özeti a52d159f… ile başlar ve "abc" özetiyle hiçbir benzerlik taşımaz.
  • Tek yönlülük (ön görüntü direnci): Verilen bir özeti üreten girdiyi bulmak pratikte imkânsız olmalıdır.
  • Çakışma direnci: Aynı özeti veren iki farklı girdi bulmak pratikte imkânsız olmalıdır.
  • Hız: Dosya doğrulama gibi işlerde hızlı olmak avantajdır; ama aşağıda göreceğiniz gibi şifre saklarken dezavantaja dönüşür.

Çıktı sabit uzunlukta olduğu için teoride sonsuz sayıda girdi aynı özeti paylaşır. Güvenli bir algoritmada önemli olan, böyle bir çakışmayı bilerek bulmanın makul sürede mümkün olmamasıdır.

SHA nedir?

SHA, "Secure Hash Algorithm" (güvenli özet algoritması) ifadesinin kısaltmasıdır ve ABD standartlar kurumu NIST'in yayımladığı hash algoritması ailelerinin adıdır. SHA-1 ve SHA-2 ailesi (SHA-224, SHA-256, SHA-384, SHA-512 ve türevleri) FIPS 180-4 standardında, SHA-3 ailesi ise FIPS 202 standardında tanımlıdır. Algoritma adındaki sayı çoğunlukla çıktının bit uzunluğunu gösterir: SHA-256 256 bitlik, SHA-512 512 bitlik bir özet üretir.

Bugün en yaygın kullanılan üye SHA-256'dır; ayrıntılarını SHA-256 nedir yazısında ele alıyoruz. SHA-1 ise aşağıda anlatılan nedenlerle artık güvenlik gerektiren işlerde kullanılmaz.

MD5 ve SHA-1 neden artık güvenli sayılmıyor?

MD5 için çakışma üretmek uzun süredir sıradan bir bilgisayarla yapılabilen bir işlemdir. Araştırmacılar, aynı MD5 özetine sahip farklı belgeler ve hatta sahte sertifikalar üretilebildiğini göstermiştir. SHA-1 için de 2017'de aynı SHA-1 özetine sahip iki farklı PDF dosyası kamuya açık biçimde yayımlandı.

Bu kırılmalar çakışma direnciyle ilgilidir. Yani saldırgan, kendi seçtiği iki farklı veriyi aynı özete sahip olacak şekilde hazırlayabilir. Bu durum özellikle dijital imza ve sertifika gibi "bu özete güveniyorum" denen yerlerde tehlikelidir. Bu nedenle tarayıcılar ve sertifika otoriteleri SHA-1 imzalı sertifikaları uzun süre önce bırakmıştır; büyük tarayıcılar bu sertifikalara güvenmeyi 2017 başında sonlandırdı.

SHA-256, SHA-384 ve SHA-512'yi içeren SHA-2 ailesi ile SHA-3 ailesi için bugün bilinen pratik bir çakışma saldırısı yoktur. Bu algoritmalar ABD standartlar kurumu NIST tarafından yayımlanmıştır (SHA-2 için FIPS 180-4, SHA-3 için FIPS 202 standardı).

Hash nerelerde kullanılır?

1. Dosya bütünlüğü: hash kontrolü nedir?

Hash kontrolü (hash doğrulaması), bir dosyanın hash değerini hesaplayıp güvenilir bir kaynaktaki değerle karşılaştırmaktır. Birçok yazılım, indirme sayfasında dosyanın SHA-256 değerini de yayımlar. Dosyayı indirdikten sonra özetini hesaplar ve yayımlanan değerle karşılaştırırsınız. İki değer aynıysa dosya indirme sırasında bozulmamış ve değiştirilmemiştir.

Dosyanın hash değeri nasıl alınır?

  • Windows: Dosyanın bulunduğu klasörde PowerShell'i açıp Get-FileHash dosya.iso yazın. Komut varsayılan olarak SHA-256 hesaplar; başka bir algoritma için sonuna -Algorithm SHA512 gibi bir parametre ekleyebilirsiniz (SHA1, SHA256, SHA384, SHA512 ve MD5 desteklenir).
  • macOS: Terminal'de shasum -a 256 dosya.iso komutunu kullanın.
  • Kod yazmadan: hash hesaplama aracında dosyayı seçin; değer tarayıcınızda hesaplanır, dosya sunucuya yüklenmez.

Çıkan değeri üreticinin yayımladığı değerle karşılaştırın. Büyük-küçük harf farkı önemli değildir; tek bir karakter bile farklıysa dosyayı kullanmayın ve yeniden indirin. Değerin kendisini de güvendiğiniz bir kaynaktan (üreticinin resmi sitesi) aldığınızdan emin olun; dosyayı değiştiren kişi aynı sayfadaki özeti de değiştirebilir.

2. Şifre saklama: tuz ve yavaş hash

Doğru kurulmuş bir sistem, şifrenizi düz metin olarak değil, özet olarak saklar. Giriş yaptığınızda yazdığınız şifrenin özeti hesaplanır ve kayıtlı özetle karşılaştırılır. Böylece veritabanı sızsa bile şifreler doğrudan görünmez.

Ancak burada MD5, SHA-1 ve hatta SHA-256 tek başına yeterli değildir. Bu algoritmalar hızlı olacak şekilde tasarlandığı için saldırgan, ele geçirdiği özetler üzerinde çok büyük sayıda tahmini kısa sürede deneyebilir. Doğru yöntemin iki parçası vardır:

  • Tuz (salt): Her kullanıcı için rastgele üretilen ve şifreye eklenen değerdir. Aynı şifreyi kullanan iki kişinin özetleri farklı çıkar ve önceden hesaplanmış tablolar işe yaramaz.
  • Yavaş hash: Argon2, bcrypt ve scrypt gibi algoritmalar bilerek yavaş ve (Argon2 ile scrypt'te) bellek isteyen biçimde çalışır. Tek bir girişte fark edilmeyen bu gecikme, milyonlarca tahmin deneyen saldırganı ciddi biçimde yavaşlatır.

Ayrıntılar için şifreler nasıl saklanmalı yazısına bakabilirsiniz. Kullanıcı tarafında en iyi savunma ise uzun ve rastgele bir şifredir; şifre üretici bunun için tasarlandı.

3. Dijital imza nedir, nasıl çalışır?

Dijital imza, bir belgenin kimden geldiğini ve imzalandıktan sonra değişmediğini kanıtlar. Asimetrik kriptografiye dayanır ve kabaca şöyle çalışır:

  1. İmzalayan kişi belgenin özetini (ör. SHA-256) hesaplar.
  2. Bu özeti yalnızca kendisinde bulunan özel anahtarla imzalar. Ortaya çıkan değer dijital imzadır.
  3. Alıcı, belgenin özetini kendisi yeniden hesaplar ve imzayı gönderenin herkese açık açık anahtarıyla doğrular.
  4. Belgede tek bir karakter değişmişse özet tutmaz ve doğrulama başarısız olur.

Belgenin tamamı yerine özetinin imzalanması işlemi hızlandırır. Ama bu yüzden hash algoritmasının çakışma direnci kritik önem taşır: Saldırgan aynı özete sahip iki belge üretebilirse, zararsız belgeye alınan imzayı zararlı belgeye taşıyabilir. MD5 ve SHA-1'in imzalarda bırakılmasının nedeni budur.

HTTPS bağlantılarındaki sertifikalar, yazılım güncellemelerinin imzaları ve Türkiye'de kullanılan elektronik imza bu tekniğin günlük örnekleridir; Türkiye'de elektronik imzanın yasal dayanağı 5070 sayılı Elektronik İmza Kanunu'dur. Sertifikaların bağlantı sırasında nasıl kullanıldığını SSL/TLS ve güvenli iletişim yazısında okuyabilirsiniz. Belgeleri yasal geçerliliği olan bir e-imzayla imzalamak, yani e-imza almak ve atmak ise ayrı bir konudur; bunu e-imza nedir yazısında anlatıyoruz.

4. Blokzincir (blockchain) ve kripto paralar

Blokzincir, kayıtların bloklar hâlinde tutulduğu ve her bloğun bir öncekinin özetini içerdiği bir veri yapısıdır. Geçmişteki bir blokta tek bir kayıt değiştirilirse o bloğun özeti değişir; bu da sonraki bloktaki "önceki blok özeti" alanıyla uyuşmaz. Zincirin geri kalanını yeniden hesaplamadan bir kaydı gizlice değiştirmek bu yüzden çok zordur.

Kripto paralarda hash ve dijital imza birlikte çalışır. Bir işlemi yalnızca ilgili özel anahtara sahip kişi imzalayabilir; ağdaki diğer katılımcılar imzayı açık anahtarla doğrular. Bitcoin, blok özetleri ve iş kanıtı (proof of work) için SHA-256'yı art arda iki kez uygular.

Bu bölüm teknik bir açıklamadır; herhangi bir kripto paraya yatırım önerisi değildir. Kripto para cüzdanınızın kurtarma kelimelerini ve özel anahtarınızı hiçbir siteye veya kişiye vermeyin.

5. HMAC: anahtarlı özet

Düz bir hash, verinin değişip değişmediğini gösterir ama değişikliği kimin yaptığını söylemez; veriyi değiştiren kişi özeti de yeniden hesaplayabilir. HMAC bu açığı, hash fonksiyonunu yalnızca iki tarafın bildiği gizli bir anahtarla birlikte kullanarak kapatır. Anahtarı bilmeyen biri geçerli bir HMAC değeri üretemez.

HMAC-SHA256, API isteklerinin imzalanmasında ve oturum çerezlerinin doğrulanmasında yaygın olarak kullanılır. Authenticator uygulamalarındaki tek kullanımlık kodlar da HMAC ile hesaplanır; bu kodları tanımlayan TOTP standardı varsayılan olarak HMAC-SHA1 kullanır, HMAC-SHA256 ve HMAC-SHA512'ye de izin verir. Dijital imzadan farkı, her iki tarafın da aynı gizli anahtarı paylaşmasıdır; bu yüzden üçüncü bir kişiye "bunu kesinlikle o gönderdi" diye kanıtlanamaz.

Aynı metin neden farklı özet verebilir?

Hash, karakterleri değil baytları işler. Türkçe karakterler UTF-8'de ikişer bayt, eski Windows kodlamalarında ise birer bayt tutar. Bu yüzden "şifre" kelimesinin SHA-256 özeti UTF-8 ile hesaplandığında başka, ISO-8859-9 ile hesaplandığında başka çıkar. Sondaki görünmez bir boşluk veya satır sonu da özeti tamamen değiştirir.

İki sistemin ürettiği özetleri karşılaştırırken önce ikisinin de aynı kodlamayı (günümüzde neredeyse her zaman UTF-8) kullandığından emin olun. Özetin büyük ya da küçük harfle yazılması ise önemli değildir; BA78… ile ba78… aynı değeri gösterir.

Hangi algoritmayı ne için seçmeli?

AmaçÖnerilenKaçının
Dosya doğrulamaSHA-256 veya SHA-512Güvenlik gerekiyorsa MD5, SHA-1
Dijital imza, sertifikaSHA-256 ve üstü, SHA-3MD5, SHA-1
Şifre saklamaArgon2, bcrypt, scrypt (tuzlu)MD5, SHA-1, tek başına SHA-256
Basit bozulma kontrolü (saldırı beklenmeyen)SHA-256; MD5 de iş görür—

Kendi yazılımınızda hash hesaplamak isterseniz Python ile MD5 ve SHA-256 hesaplama yazısındaki örneklere göz atabilirsiniz.

Sık sorulan sorular

Hash değeri nedir?

Hash değeri (hash kodu ya da özet), herhangi bir uzunluktaki veriden hesaplanan sabit uzunlukta bir değerdir. Aynı veri her zaman aynı değeri verir, tek bir karakter değişirse değer tamamen farklı çıkar. Bu yüzden bir dosyanın veya metnin değişip değişmediğini anlamak için kullanılır.

Hash çözülebilir mi?

Hash tek yönlüdür; çıktısından girdiyi geri hesaplayan bir anahtar ya da yöntem yoktur. Ancak girdi kısa ve tahmin edilebilir bir metinse, saldırgan olası metinlerin özetini tek tek hesaplayıp eşleşme arayabilir. Sitelerdeki "MD5 çözücü" araçları da aslında önceden hesaplanmış büyük tablolarda arama yapar.

SHA-256 mı MD5 mi kullanmalıyım?

Güvenliğin önemli olduğu her yerde SHA-256 veya SHA-3 ailesini kullanın. MD5 ve SHA-1 için çakışma üretmek pratik hâle geldiğinden imza ve sertifika gibi işlerde kullanılmamalıdır. MD5 yalnızca kasıtlı saldırı beklenmeyen, basit bozulma kontrollerinde görülebilir.

Şifreler SHA-256 ile saklanabilir mi?

Tek başına önerilmez. SHA-256 çok hızlı hesaplandığı için saldırgan ele geçirdiği özetler üzerinde saniyede çok sayıda tahmin deneyebilir. Şifreler için her kullanıcıya ayrı tuz (salt) ekleyen ve bilerek yavaş çalışan Argon2, bcrypt veya scrypt kullanılmalıdır.

Bir dosyanın hash değeri nasıl alınır?

Windows'ta PowerShell'de Get-FileHash dosya_adı komutu varsayılan olarak SHA-256 değerini verir; macOS'ta Terminal'de shasum -a 256 dosya_adı kullanılır. Kod yazmadan yapmak isterseniz sitedeki hash hesaplama aracında dosyayı seçmeniz yeterlidir; hesaplama tarayıcınızda yapılır.

Dijital imza ile e-imza aynı şey mi?

Dijital imza, açık anahtarlı kriptografiye dayanan teknik yöntemin adıdır. Günlük dilde e-imza denen şey, bu tekniği yasal çerçevede ve onaylı sertifikalarla kullanan uygulamadır. Yani e-imzanın altında dijital imza tekniği çalışır.