Skip to content
Bloga Dönün
Eğitimler

SHA-1 / SHA-256 / SHA-512: 2026 özet algoritma rehberi

SHA-1, SHA-256, SHA-384, SHA-512 ve SHA-3; güvenlik durumu, çıktı boyutu, performans ve gerçek kullanım senaryoları açısından karşılaştırıldı. Karar ağacı ve yaygın hatalar dahil.

14 dakika okuma

SHA-1 ile SHA-256 ile SHA-512: 2026’da Doğru Özet Algoritmasını Seçmek

Bir TLS sertifikası, bir Git nesne veritabanı, bir Bitcoin blok başlığı, bir Linux paket yöneticisi ve bir Docker image manifesti açın — hepsinde bir SHA özeti bulursunuz. Ama aynı SHA değil. SHA-1, SHA-256, SHA-384, SHA-512, SHA-3: bu aile üç onyılı, iki tasarım çizgisini ve en eski üyeyi üretim ortamında kıran çığır açan bir karma çarpışması saldırısını kapsar.

Bu rehber, kullanım senaryonuz için doğru algoritmayı tereddütsüz seçebilmeniz amacıyla ailenin tamamını haritalıyor.

Hızlı Karar Ağacı

Ayrıntılara dalmadan önce, geliştiricilerin gerçekte ihtiyaç duyduğu tek tabloluk özet:

DurumunuzEn İyi SeçimNeden
TLS/HTTPS sertifikasıSHA-256 (asgari), yüksek güvenlik için SHA-384CA/Browser Forum Baseline Requirements tarafından zorunlu kılınmıştır
JWT imzalama (HMAC veya RSA)SHA-256 (HS256/RS256)Evrensel destek; uyumluluk rejimleri için SHA-384/512
Yazılım bütünlük sağlamasıSHA-256Endüstri standardı; geniş çapta anlaşılır
Arşivsel veya uzun ömürlü bütünlükSHA-512Daha büyük çıktı, ilerideki on yıllar için güvenli marj
İçerik adresleme (IPFS, OCI)SHA-256İçerik adresli depolama için fiilî standart
Git (mevcut repoları okuma/yazma)Mevcut için SHA-1; yeni için --object-format=sha256 ile SHA-256Git geçiş sürecinde; SHA-1 hâlâ baskın
Ethereum ile birlikte çalışmaKeccak-256 (NIST SHA-3 değil)Ethereum, standartlaşma öncesi Keccak varyantını kullanır
Derinlemesine savunma veya gizli sistemlerSHA-384 veya SHA-512NSA Suite B; AES-256-GCM ile eşleştirilir
Yeni kod, eski sistem kısıtlaması yokSHA-3 (SHA3-256)Farklı tasarım çizgisi; uzunluk uzatma açığı yok
Parola saklamaYukarıdakilerin hiçbiribcrypt, Argon2id veya scrypt kullanın — SHA çok hızlı

SHA Ailesine Genel Bakış

AlgoritmaStandartÇıktı BitiHex KarakterYılNIST DurumuBugünkü Birincil Kullanım
SHA-1FIPS 180-4160401995Kullanımdan kaldırıldı (2011), dijital imzalar için geri çekildiGit mirası, parmak izleri
SHA-256FIPS 180-4256642001GüncelTLS, JWT, Bitcoin, sağlamalar
SHA-384FIPS 180-4384962001GüncelSuite B, yüksek güvenlikli TLS
SHA-512FIPS 180-45121282001GüncelArşivleme, LUKS, HMAC-SHA-512
SHA-3 (herhangi bir varyant)FIPS 202224/256/384/512değişken2015GüncelAlternatif çizgi, donanım hızlandırma

SHA-1 ve SHA-2 (256/384/512 grubu), Merkle-Damgård yapısını paylaşır. SHA-3 bir sünger yapısı kullanır — aşağıda ele alınan, göründüğünden daha önemli bir ayrım.

SHA-1: Kırılmış ama Ölü Değil

SHA-1, 2000’lerin iş yükünü taşıyan algoritmasıydı. SSL sertifikaları, S/MIME e-posta, PGP parmak izleri ve Git hepsi onun etrafında birleşti. Ardından Şubat 2017’de Google ve CWI Amsterdam, SHAttered’ı yayımladı: aynı SHA-1 özetine sahip iki farklı PDF dosyası üreten seçilmiş önek karma çarpışması saldırısı. Bu saldırı yaklaşık 6,5 × 10^19 SHA-1 değerlendirmesi gerektiriyordu — 2017’de pahalıydı, bugün bulut bilişimle ekonomik hale geldi.

NIST, SHA-1’i dijital imzalar için 2011’de zaten kullanımdan kaldırmıştı (NIST Special Publication 800-131A). SHAttered gösterimi temizliği hızlandırdı: tarayıcılar 2017’ye kadar SHA-1 TLS sertifikalarına güvenmeyi bıraktı ve CA/Browser Forum yeni düzenlemeler için SHA-256’yı zorunlu kıldı.

SHA-1’in hâlâ kullanıldığı alanlar:

  • Git nesne veritabanı: Git, bir güvenlik ilkesi değil hızlı bir içerik özeti olarak SHA-1 etrafında tasarlandı. Depo biçimi 40 hex nesne kimliklerini sabit kodlar. SHA-256’ya geçiş yolu (git init --object-format=sha256) mevcuttur ancak benimseme yavaş çünkü barındırılan her platform, her CI aracı ve her mevcut kopyanın eş zamanlı olarak geçiş yapması gerekmektedir.
  • Eski sistem parmak izleri: Eski SSH ana bilgisayar anahtarı parmak izleri, PGP anahtar parmak izleri ve sertifika seri numarası şemaları hâlâ SHA-1 değerleri ortaya koymaktadır. Bunlar bilgilendirici niteliktedir, çoğu bağlamda güvenlik açısından kritik değildir.

Ne yapmalısınız: SHA-1’i yeni hiçbir şey için kullanmayın. Git için, çarpışma riski tipik yazılım geliştirme iş akışlarında düşüktür (saldırganın çarpmadaki her iki dosyayı da kontrol etmesi gerekmektedir), ancak --object-format=sha256 kullanan yeni projeler doğru uzun vadeli yöndür.

Tarayıcınızda SHA-1 özeti üretin: SHA-1 Özet Üretici.

SHA-256: İş Yükünü Taşıyan Algoritma

SHA-256, 2026’da interneti çalıştıran algoritmadır. Bir genel CA tarafından verilen her TLS sertifikası, imza özeti için SHA-256 kullanır. HS256, RS256 veya ES256 ile imzalanan her JWT, dahili olarak SHA-256 kullanır. Bitcoin’in iş ispatı çift-SHA-256’dır. Docker içerik özeti SHA-256’dır. npm paket bütünlüğü SHA-256 kullanır.

Nedenler pratiktir:

  • Güvenlik marjı: 256 bitlik çıktı, kaba kuvvet saldırısı için 2^128 işlem anlamına gelir — öngörülebilir gelecekte herhangi bir kavranabilir donanımın ötesinde. Gerçek güvenlik düzeyi, doğum günü sınırı karma çarpışması saldırıları nedeniyle biraz daha düşüktür (2^128 işlem), yine de yenilmez.
  • Donanım hızlandırma: SHA-256, her Intel Goldmont+ CPU’da (SHA-NI uzantısı), her Apple silicon yongasında, her ARMv8 işlemcide ve ağ cihazları ile depolama denetleyicilerindeki özel ASIC’lerde silikon üzerinde uygulanmaktadır. Donanım yolu kullanıldığında SHA-256 verimi, daha hızlı görünen pek çok yazılım alternatifini geride bırakır.
  • Her yerde kütüphane desteği: Her TLS kütüphanesi, her JWT kütüphanesi, her dil standart kütüphanesi SHA-256’yı uygular. Uyumluluk duvarına çarpmayacaksınız.

İçerik adresleme, bütünlük doğrulama ve çoğu imzalama iş akışı için, belirli bir standart aksi yönde gerektirmedikçe SHA-256 doğru varsayılandır.

Tarayıcınızda SHA-256 özeti üretin: SHA-256 Özet Üretici.

SHA-384: TLS Uzmanlık Algoritması

SHA-384, SHA-512’nin 384 bite kısaltılmış halidir. 192 bitlik güvenlik düzeyi sağlamak amacıyla oluşturulmuş (çıktı boyutunun yarısı karma çarpışması direnci tabanıdır) ve AES-256-GCM ve P-384 eliptik eğri anahtarlarıyla birlikte NSA Suite B kriptografisine dahil edilmiştir.

SHA-384’ü TLS için özellikle çekici kılan iki özellik:

  1. Bu çıktı boyutunda uzunluk uzatma bağışıklığı: SHA-256 ve SHA-512, uzunluk uzatma saldırılarına karşı savunmasızdır — H(gizli || mesaj) değerini bilen bir saldırgan, gizliyi bilmeden H(gizli || mesaj || uzantı) hesaplayabilir. SHA-384 ve SHA-512/256, tam iç durumdan kısaltılmıştır; bu nedenle uzunluk uzatma uygulanamaz. SHA özetlerini MAC olarak (HMAC yerine) ham halde kullanıyorsanız SHA-384 daha güvenlidir.
  2. Suite B uyumluluğu: NSA/CNSA (Commercial National Security Algorithm) suite gereksinimlerini karşılaması gereken kuruluşların, RSA-3072+, ECDH P-384 ve AES-256 ile birlikte SHA-384 veya SHA-512 kullanması gerekmektedir. Müşteriniz ABD federal bir kurumsa veya FIPS 140-3 gereksinimlerine tabi bir yükleniciyse SHA-384 zorunlu olabilir.

SHA-384, çoğu kullanım senaryosunda SHA-256’dan anlamlı ölçüde daha güvenli değildir — mevcut hesaplama düzeylerinde 128 bitlik ile 192 bitlik karma çarpışması direnci arasındaki pratik fark teoriktir. Uyumluluk veya Suite B eşleştirmesi gerektirdiğinde seçin, genel kullanım için değil.

Tarayıcınızda SHA-384 özeti üretin: SHA-384 Özet Üretici.

SHA-512: Daha Fazla Bit Gerektiğinde

SHA-512, 512 bitlik (128 hex karakterlik) bir özet üretir. 64 bit donanımda genellikle SHA-256’dan daha hızlıdır çünkü algoritma 32 bitlik sözcükler yerine 64 bitlik sözcüklerle çalışır — SHA-256’nın iç zamanlaması 32 bit aritmetik kullanırken SHA-512’ninkiler modern CPU’lara daha verimli eşleşen 64 bit aritmetik kullanır.

64 bit donanımda kıyaslamalar (gösterge niteliğinde; tarayıcı Web Crypto API):

AlgoritmaYaklaşık Verim
SHA-1~600 MB/s
SHA-256~500 MB/s
SHA-384~700 MB/s
SHA-512~700 MB/s
SHA-3-256~300 MB/s

Not: SHA-384 ve SHA-512 aynı iç sıkıştırma işlevini paylaşır, dolayısıyla aynı hızda çalışır. SHA-256, 32 bitlik sözcük boyutu her 512 bitlik mesaj bloğunu işlemek için daha fazla yineleme gerektirdiğinden 64 bit üzerinde daha yavaştır. 32 bit veya kısıtlı donanımda SHA-256 daha hızlıdır.

SHA-512 için uygun alanlar:

  • Arşivsel bütünlük: On yıllar boyunca hayatta kalması hedeflenen sağlamalar, daha büyük çıktı marjından yararlanır.
  • Tam disk şifreleme: Linux LUKS, varsayılan anahtar türetme PBKDF2 özeti olarak SHA-512 kullanır (PBKDF2’nin bir bileşeni olarak, bağımsız özet değil).
  • HMAC-SHA-512: Bazı JWT imzalama şemalarında (HS512) ve daha büyük MAC’lerin tercih edildiği API kimlik doğrulamasında kullanılır.
  • Büyük miktarda sözde rastgele veri üretme: Bir tohum özetleyen ve çok sayıda çıktı bitine ihtiyaç duyan uygulamalar, özet çağrısı sayısını azaltmak için SHA-512 kullanabilir.

Tarayıcınızda SHA-512 özeti üretin: SHA-512 Özet Üretici.

SHA-3: Farklı Bir Tasarım Felsefesi

SHA-3, daha büyük çıktılı SHA-2 değildir. Guido Bertoni, Joan Daemen, Michaël Peeters ve Gilles Van Assche tarafından tasarlanan Keccak adlı sünger yapısına dayalı, temelden farklı bir algoritmadır. NIST, SHA-2’nin Merkle-Damgård yapısında zayıflıklar bulunması durumunda yedek olarak hizmet edebilecek bir özet ailesi üretmek amacıyla yürütülen yedi yıllık açık yarışmanın (2007–2012) galibi olarak seçti.

Sünger yapısı, Merkle-Damgård’dan farklı çalışır:

  1. Girdi dolgu eklenerek bloklara bölünür.
  2. Her blok büyük bir iç durumun ilk bölümüne (“oran”) XOR işlemlenerek eklenir, ardından tüm durum Keccak-f permütasyonu ile karıştırılır.
  3. Tüm girdi özümsendikten sonra çıktı, durumun oran bölümünden “sıkıştırılarak” çıkarılır.

Çıktı yalnızca durumun bir bölümünden çıkarıldığından ve kapasite bölümü hiçbir zaman doğrudan açık olmadığından, sünger yapıları kısaltma olmaksızın uzunluk uzatma saldırılarına doğası gereği bağışıktır.

SHA-3 standart varyantları (FIPS 202):

VaryantÇıktı BitiGüvenlik Düzeyi
SHA3-224224112-bit
SHA3-256256128-bit
SHA3-384384192-bit
SHA3-512512256-bit
SHAKE128değişken128-bit
SHAKE256değişken256-bit

SHA-3 ile SHA-2 pratikte:

SHA-3, 2015 öncesi tasarlanmış protokollerde henüz yaygın olarak dağıtılmamıştır — TLS, JWT ve çoğu internet altyapısı hâlâ SHA-2 kullanmaktadır. SHA-3, kuantum sonrası imza şemalarında (CRYSTALS-Dilithium, SPHINCS+ dahili olarak SHA-3 kullanır), farklı çizgi yedeklemesi isteyen yeni protokol tasarımlarında ve Keccak permütasyonunun iyi hızlandığı donanımlarda boy göstermektedir. Saf yazılımda SHA-3, x86 üzerinde SHA-256’dan yaklaşık %40 daha yavaştır.

Tarayıcınızda SHA-3 özeti üretin: SHA-3 Özet Üretici.

Ethereum Keccak-256 Ayrımı

Kritik bir tuzak: Ethereum, NIST SHA-3 kullanmaz. Ethereum, Keccak yarışması devam ederken ve NIST FIPS 202’yi nihai hale getirmeden önce tasarlandı. Ethereum Sanal Makinesi, nihai NIST SHA-3 standardından farklı dolgu kullanan orijinal Keccak-256 sunumunu kullanır.

Ayrıntılı olarak:

  • NIST SHA3-256, son bloktan önce 0x06 dolgusu ekler.
  • Ethereum’un kullandığı orijinal Keccak-256, 0x01 dolgusu ekler.

Aynı girdi farklı özetler üretir. NIST SHA3-256 çağırmak ile Ethereum’un keccak256 işlevini çağırmak birbirinin yerine geçemez. Çoğu dilde ikisi de mevcuttur: Python’da hashlib.sha3_256() NIST SHA-3’tür; Ethereum’un kullandığı Keccak-256 için pysha3 (keccak_256 uygular) gibi bir kütüphane gerekir. JavaScript’te js-sha3 kütüphanesi her ikisini de sunar. SHA-3 Özet Üretici, NIST SHA3-256’yı uygular — Ethereum Keccak-256 özetlerine ihtiyacınız varsa Ethereum’a özgü bir araç kullanın.

Performans Kıyaslamaları

Aşağıdaki rakamlar, modern bir x86-64 dizüstü bilgisayarda tarayıcı Web Crypto API için gösterge niteliğindedir. Gerçek verim, donanıma, mesaj boyutuna ve platformun donanım hızlandırma yolunu kullanıp kullanmadığına göre değişir.

AlgoritmaAkış verimi (64-bit)
SHA-1~600 MB/s
SHA-256~500 MB/s
SHA-384~700 MB/s
SHA-512~700 MB/s
SHA-3-256~300 MB/s

Küçük mesajlar için (API token’ları, birkaç KB’ın altındaki sağlamalar) tüm algoritmalar 2 µs’nin altında tamamlanır — fark görünmezdir. Büyük veriler (tar arşivleri, disk imgeleri) için SHA-384/512, 64 bitlik sözcüklerle çalıştıklarından 64 bit sistemlerde SHA-256’yı geride bırakır. SHA-3, saf yazılımda daha yavaştır; donanım Keccak hızlandırması mevcut değilse verim açısından kritik kodda SHA-2’yi tercih edin. SHA-1 verimi, onu kullanmak için hiçbir zaman geçerli bir neden değildir.

Yaygın Hatalar

Kodlama Uyumsuzlukları

SHA, baytlar üzerinde çalışır. "hello" dizisini JavaScript’in UTF-16 yerine UTF-8 olarak kodladığı bir tarayıcıda özetlerseniz, str.encode("utf-8") kullanan Python betiğinden farklı bir özet elde edersiniz. Metni özetlemeden önce her zaman UTF-8’e normalize edin.

Tutarlı bir kalıp:

const encoder = new TextEncoder(); // UTF-8
const data = encoder.encode(inputString);
const hashBuffer = await crypto.subtle.digest("SHA-256", data);

MAC’ler için Tuz Eksikliği

Ham SHA özetini ileti kimlik doğrulama kodu olarak kullanmak (H(gizli || mesaj)), SHA-256 ve SHA-512 üzerinde uzunluk uzatma saldırılarına karşı savunmasızdır. Bunun yerine HMAC (RFC 2104) kullanın: HMAC-SHA256(anahtar, mesaj). HMAC, uzatma saldırılarını engelleyen iç ve dış anahtarlı dolgu ile özeti sarar.

SHA-256’da Uzunluk Uzatma

API imzasını SHA256(gizli + yük) olarak oluşturuyorsanız, elde edilen özeti bilen bir saldırgan, gizliyi bilmeden SHA256(gizli + yük + saldırgan_uzantısı) hesaplayabilir. Düzeltme: HMAC kullanın ya da SHA-3 (yapısı gereği bağışık) veya SHA-384/SHA-512/256 (kısaltma sayesinde bağışık) tercih edin.

Keccak-256 ile NIST SHA-3’ü Karıştırmak

Yukarıda açıklandığı gibi: Ethereum, 0x01 dolgulu Keccak-256 kullanır; NIST SHA3-256 ise 0x06 dolgusu kullanır. Aynı girdiden farklı çıktılar üretirler. Ethereum sözleşmeleri veya Solidity ABI kodlamasıyla entegrasyon yapmadan önce kütüphanenizin hangi varyantı uyguladığını doğrulayın.

SHA’yı Parola Saklama İçin Kullanmak

SHA algoritmaları hızlı olacak şekilde tasarlanmıştır. Bu, parola saklama için tam olarak yanlış özelliktir: bir GPU kümesi saniyede milyarlarca SHA-256 özeti hesaplayabilir, bu da SHA ile özetlenmiş bir parola veritabanına karşı sözlük saldırısını pratikte mümkün kılar. Parola saklamak için bellek yoğun bir anahtar türetme işlevi kullanın: Argon2id (önerilir), bcrypt veya scrypt. Parolaları asla ham SHA özetleri olarak saklamayın, tuzlanmış olsa bile.

Sık Sorulan Sorular

SHA-1 ile SHA-256 arasındaki fark nedir?

SHA-1 ve SHA-256, FIPS 180-4’te standartlaştırılmış Merkle-Damgård özet fonksiyonlarıdır; ancak SHA-256, SHA-1’in 160 bitlik özetine karşılık 256 bitlik bir özet üretir. Daha önemlisi, SHA-1 kırılmıştır: gerçek dünya karma çarpışması saldırısı (SHAttered, 2017), aynı SHA-1 özetine sahip iki farklı PDF dosyası göstermiştir. SHA-256’nın bilinen karma çarpışması saldırısı yoktur ve 128 bitlik karma çarpışması direnci sağlar. Bütünlük garantisi gerektiren her şey için SHA-256 kullanın; yeni çalışmalarda SHA-1 kullanmayın.

SHA-512, SHA-256’dan daha mı hızlı?

64 bit donanımda, büyük girdiler için genellikle %30–40 daha hızlıdır. SHA-512, modern CPU’ların yerel olarak işlediği 64 bitlik sözcük aritmetiği kullanır. SHA-256, aynı donanımda her mesaj bloğu için iki kat daha fazla işlem gerektiren 32 bitlik sözcük aritmetiği kullanır. 32 bit platformlarda veya kısıtlı mikrodenetleyicilerde SHA-256 daha hızlıdır. Kısa mesajlar için (birkaç KB’ın altında) fark algılanamaz.

SHA-1’den SHA-256’ya geçiş yapmalı mıyım?

Dijital imzalar, TLS sertifikaları ve kod imzalama için: evet, kesinlikle — SHA-1 kullanımdan kaldırılmıştır ve aktif olarak kırılmıştır. Git depoları için: geçiş yolu mevcuttur (git init --object-format=sha256) ancak ekosistem koordinasyon gereksinimleri nedeniyle benimseme yavaştır; tipik depo kullanımı için karma çarpışması riski düşüktür. Bilgilendirici parmak izleri için (SSH ana bilgisayar anahtarı görüntüleme): güvenlik açığı minimumdur, ancak SHA-256’ya geçmek iyi bir hijyen uygulamasıdır.

SHA-256 geri çevrilebilir mi?

Hayır. SHA-256, tasarımı gereği tek yönlü bir fonksiyondur. Verilen bir özetten orijinal girdiyi matematiksel olarak geri alamazsınız. Saldırganların yapabildiği şey, sözlük veya kaba kuvvet saldırısı çalıştırmaktır: milyonlarca aday girdiyi özetleyip karşılaştırırlar. Düşük entropili girdiler için (kısa dizeler, yaygın parolalar, sıralı sayılar) önceden hesaplanmış gökkuşağı tabloları bunu pratikte mümkün kılar. Yüksek entropili girdiler için (rastgele UUID’ler, büyük dosyalar), tersine çevirme hesapsal olarak mümkün değildir. Bu yüzden SHA tek başına parola saklama için uygun değildir — yavaş, tuzlanmış bir anahtar türetme işlevine ihtiyacınız var.

SHA-3’ü SHA-2 yerine ne zaman kullanmalıyım?

SHA-3 şu durumlarda uygundur: (a) olası gelecekteki SHA-2 zayıflıklarına karşı sigorta olarak farklı tasarım çizgisinden bir özet istiyorsanız; (b) protokolünüz HMAC kullanmadan uzunluk uzatma bağışıklığı gerektiriyorsa; (c) dahili olarak SHA-3 belirten kuantum sonrası imza şemaları uyguluyorsanız; veya (d) Keccak için donanım hızlandırmanız var ve verimi artırmanız gerekiyorsa. Çoğu günlük kullanım senaryosu için (TLS, JWT, sağlamalar), SHA-256 daha geniş ekosistem desteğine sahiptir ve pragmatik varsayılandır. SHA-3, eşdeğer çıktı boyutlarında SHA-2’den daha güvenli değildir — uzun vadeli güvenlikte farklı bir bahistir.

Ethereum neden NIST SHA-3 yerine Keccak-256 kullanıyor?

Ethereum, NIST’in FIPS 202’yi (Ağustos 2015) yayımlayarak SHA-3 standardını nihai hale getirmesinden önce, 2013–2014 yıllarında tasarlandı. O sırada Keccak sunumu muhtemelen galip gelecek olarak değerlendiriliyordu ve Ethereum’un yazarları onu doğrudan kullandı. NIST standardı nihai hale getirdiğinde, etki alanı ayırma dolgusunu 0x01’den (orijinal Keccak) 0x06’ya değiştirdi ve böylece aynı girdiden farklı çıktı üretti. Ethereum, orijinal Keccak dolgusuyla zaten dağıtılmıştı ve bunu değiştiremedi. Bu nedenle “Ethereum keccak256” ve “NIST SHA3-256”, aynı temel Keccak-f permütasyonunu paylaşmalarına rağmen farklı algoritmalardır.


Araçları deneyin: SHA-1 · SHA-256 · SHA-384 · SHA-512 · SHA-3 — tümü tarayıcınızda çalışır, hiçbir veri makinenizden ayrılmaz.

Etiketler: hash sha cryptography security