İçeriğe geç

SHA-256 Nedir, Nerelerde Kullanılır?

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

Kısaca cevap

SHA-256, her boyuttaki veriden 256 bitlik (64 onaltılık karakter) sabit bir "parmak izi" üreten tek yönlü bir hash algoritmasıdır. NIST'in FIPS 180-4 standardında tanımlıdır ve SHA-2 ailesinin en yaygın üyesidir. Dosyaların değişmediğini doğrulamak, dijital imza atmak, HTTPS bağlantılarını korumak ve blokzincirdeki kayıtları birbirine bağlamak için kullanılır. Özetten asıl veri geri elde edilemez.

Bu sayfada

SHA-256 nedir?

SHA-256, "Secure Hash Algorithm 256" ifadesinin kısaltmasıdır. Adındaki 256, ürettiği özetin bit uzunluğunu gösterir. ABD standartlar kurumu NIST'in yayımladığı SHA-2 ailesine aittir; bu aile ilk kez Ağustos 2002'de yayımlanan FIPS 180-2 standardıyla tanımlandı, bugünkü güncel metin ise Ağustos 2015 tarihli FIPS 180-4'tür. FIPS 180-4 yedi algoritma tanımlar: SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 ve SHA-512/256.

Hash kavramını, MD5 ile farkını ve dijital imzanın genel mantığını Hash nedir? yazısında anlattık. Bu yazı SHA-256'nın kendisine odaklanıyor: nasıl çalıştığı, ne kadar güvenli olduğu ve nerede kullanıldığı.

SHA-256 ne işe yarar?

SHA-256'nın temel işi, bir verinin değişip değişmediğini kısa ve karşılaştırması kolay bir değerle göstermektir. Başlıca kullanım alanları:

  • Dosya doğrulama: Yazılım üreticileri indirme dosyalarının SHA-256 değerini yayımlar; siz de indirdiğiniz dosyanın özetini hesaplayıp karşılaştırırsınız.
  • Dijital imza ve sertifikalar: İmza, belgenin tamamı yerine SHA-256 özeti üzerinden atılır. HTTPS sertifikalarında da bu yöntem kullanılır.
  • TLS (HTTPS) bağlantıları: TLS 1.3'ü tanımlayan RFC 8446, uyumlu her uygulamanın TLS_AES_128_GCM_SHA256 şifre takımını desteklemesini zorunlu tutar; adındaki SHA256 bu takımda kullanılan hash fonksiyonudur. Ayrıntılar SSL/TLS ve güvenli iletişim yazısında.
  • HMAC-SHA256: Gizli bir anahtarla birlikte kullanılan SHA-256; API isteklerini ve oturum çerezlerini doğrulamakta yaygındır.
  • Blokzincir: Bitcoin, blok özetleri ve iş kanıtı için SHA-256'yı art arda iki kez uygular.

NIST'in hash fonksiyonları politikası da birlikte çalışabilirlik gereken uygulamalarda en az SHA-256 kullanılmasını önerir.

SHA-256 algoritması nasıl çalışır?

SHA-256'nın matematiği karmaşık görünse de iş akışı dört adımda özetlenebilir. Aşağıdaki sayılar FIPS 180-4'ten alınmıştır.

ÖzellikSHA-256
Girdi (mesaj) boyutu264 bitten küçük
Blok boyutu512 bit (64 bayt)
Sözcük (word) boyutu32 bit
Tur sayısıHer blok için 64 tur
Özet boyutu256 bit (32 bayt, 64 hex karakter)

1. Dolgu (padding)

Mesaj önce bitlere çevrilir. Sonuna bir adet "1" biti, ardından yeterince "0" biti eklenir; en sona da mesajın asıl uzunluğu 64 bitlik bir sayı olarak yazılır. Amaç, toplam uzunluğu 512'nin katına getirmektir. Bu yüzden 55 bayta kadar olan bir mesaj tek bloğa sığar, 56 baytlık bir mesaj ise iki blok tutar.

2. Başlangıç değerleri

Algoritma, sekiz adet 32 bitlik başlangıç değeriyle başlar. Bu değerler rastgele seçilmemiştir: ilk sekiz asal sayının (2, 3, 5, 7, 11, 13, 17, 19) kareköklerinin ondalık kısımlarının ilk 32 bitidir. Örneğin √2'den türetilen ilk değer 6a09e667'dir. Her turda kullanılan 64 sabit de ilk 64 asal sayının küpköklerinden aynı yöntemle elde edilir; ilki 428a2f98'dir. Böyle "gizlenecek bir şeyi olmayan" sabitler seçmek, tasarımcının sabitlerin içine gizli bir zayıflık yerleştirmediğine dair güven verir.

3. Sıkıştırma: 64 tur

Her 512 bitlik blok önce 16 adet 32 bitlik sözcüğe bölünür, sonra bit döndürme, kaydırma, XOR ve toplama işlemleriyle 64 sözcüğe genişletilir (mesaj çizelgesi). Ardından a'dan h'ye kadar adlandırılan sekiz çalışma değişkeni 64 tur boyunca karıştırılır. Her turda bit döndürme, XOR, "seçme" ve "çoğunluk" fonksiyonları ile 232 modunda toplama yapılır. Blok bitince sonuç, önceki ara özete eklenir ve sıradaki bloğa geçilir.

4. Sonuç

Son blok işlendiğinde sekiz adet 32 bitlik değer yan yana yazılır ve 256 bitlik özet ortaya çıkar. Her bloğun sonucu bir sonrakine aktarıldığı için mesajın herhangi bir yerindeki tek bir bit değişikliği bile son özeti tamamen değiştirir.

Örnek SHA-256 değerleri

Aşağıdaki özetler UTF-8 kodlamasıyla hesaplanmıştır. Tek bir büyük harfin veya noktanın bile sonucu nasıl baştan sona değiştirdiğine dikkat edin:

GirdiSHA-256 özeti
(boş metin)e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
merhaba4c6bcdd55f3153e1939669ab1ec039e4059174dc25abdfcb2f58868849b4d61b
Merhaba7fdc9f4717c5fe66df286c700fab969b4d6209d03aa84624c5f8f58c17c9c058
merhaba.8b41a7ef59f72526e03520ca771f652e36cf9fe7228b119e310285f0b9adc4f9

Boş metnin bile özeti vardır; çünkü dolgu adımı her zaman en az bir blok üretir. Bu değerleri SHA-256 hesaplama aracına aynı metinleri yazarak kendiniz doğrulayabilirsiniz; hesaplama tarayıcınızda yapılır. Türkçe karakterli metinlerde farklı sonuç almanızın en sık nedeni kodlama farkıdır (UTF-8 yerine eski Windows kodlaması).

SHA-256 nasıl hesaplanır? Python ve JavaScript örnekleri

Python'da standart kütüphanedeki hashlib yeterlidir:

import hashlib

ozet = hashlib.sha256("merhaba".encode("utf-8")).hexdigest()
print(ozet)  # 4c6bcdd55f3153e1939669ab1ec039e4059174dc25abdfcb2f58868849b4d61b
print(len(ozet))  # 64

Tarayıcıda ve Node.js'te Web Crypto API kullanılabilir. Aşağıdaki kod Node.js 24'te bir .mjs dosyası olarak çalıştırılmıştır; tarayıcıda da aynı şekilde çalışır:

const veri = new TextEncoder().encode("merhaba");
const ozet = await crypto.subtle.digest("SHA-256", veri);
const hex = [...new Uint8Array(ozet)]
  .map((b) => b.toString(16).padStart(2, "0"))
  .join("");
console.log(hex); // 4c6bcdd55f3153e1939669ab1ec039e4059174dc25abdfcb2f58868849b4d61b

C# için ayrıntılı bir örnek C# ile SHA256 yazısında bulunuyor. Windows'ta bir dosyanın SHA-256 değeri için PowerShell'deki Get-FileHash komutu varsayılan olarak SHA-256 kullanır.

SHA-256 ne kadar güvenli?

Bir hash fonksiyonunun güvenliği birkaç ayrı soruyla ölçülür. NIST'in hash fonksiyonları sayfasına göre çakışma direncinin bit cinsinden gücü, çıktı uzunluğunun yarısıdır:

  • Çakışma direnci (128 bit): Aynı özeti veren iki farklı girdi bulmak yaklaşık 2128 işlem gerektirir. Buradaki "yarıya inme", doğum günü paradoksu denen olasılık etkisinden kaynaklanır.
  • Ön görüntü direnci (256 bit): Verilen bir özeti üreten herhangi bir girdiyi bulmak, deneme yoluyla 2256 mertebesinde iş ister.

Bu sayılar bugünkü ve öngörülebilir bilgisayar gücünün çok ötesindedir. MD5 ve SHA-1'in aksine, SHA-256 için bilinen pratik bir çakışma saldırısı yoktur. NIST de 2015 tarihli politikasında SHA-2 kullanan uygulamaların SHA-3'e geçmesine şu an gerek olmadığını belirtir.

Uzunluk uzatma: yanlış kullanımda ortaya çıkan zayıflık

SHA-256'nın tasarımından gelen bir özelliği vardır: özet(gizli + mesaj) değerini bilen biri, gizli değeri bilmeden gizli + mesaj + ek biçimindeki uzatılmış bir mesajın geçerli özetini hesaplayabilir. Buna uzunluk uzatma (length extension) saldırısı denir; NIST'e FIPS 180-4 için iletilen kamu yorumlarında da SHA-256 ve SHA-512'nin bu saldırıya açık olduğu ve HMAC kullanılması gerektiği vurgulanır.

Pratik sonucu basittir: bir mesajı gizli bir anahtarla doğrulamak istiyorsanız anahtarı mesajın başına ekleyip SHA-256 almayın, HMAC-SHA256 kullanın. HMAC'in iç yapısı bu saldırıyı engeller.

SHA-256 ile şifre saklanır mı?

Tek başına saklanmamalıdır. SHA-256 hızlı olacak şekilde tasarlanmıştır; bu dosya doğrulamada avantaj, şifre saklamada ise dezavantajdır. Sızan bir veritabanındaki SHA-256 özetleri üzerinde saldırgan, ekran kartlarıyla çok sayıda şifre tahminini kısa sürede deneyebilir. Aynı şifreyi kullanan iki kullanıcının özeti de aynı çıkar.

Şifreler için her kullanıcıya ayrı tuz (salt) ekleyen ve bilerek yavaş çalışan bcrypt, scrypt veya Argon2 kullanılmalıdır; ayrıntılar şifreler nasıl saklanmalı yazısında. Kullanıcı tarafında en iyi savunma ise uzun ve rastgele bir şifredir.

SHA-256, SHA-512 ve SHA-3 karşılaştırması

AlgoritmaStandartÖzetBlok / sözcükNot
SHA-256FIPS 180-4256 bit512 / 32 bitEn yaygın; TLS, imza, blokzincir
SHA-224FIPS 180-4224 bit512 / 32 bitSHA-256'nın farklı başlangıç değerli, kısaltılmış hâli
SHA-512FIPS 180-4512 bit1024 / 64 bitDaha uzun güvenlik payı
SHA-512/256FIPS 180-4256 bit1024 / 64 bitSHA-512 altyapısıyla 256 bitlik özet
SHA3-256FIPS 202256 bitFarklı (sünger) yapıSHA-2'den bağımsız tasarım, yedek seçenek

Günlük işlerin neredeyse tamamında SHA-256 doğru seçimdir. Bir sistemin gereksinimleri başka bir algoritmayı şart koşmuyorsa onu değiştirmek için bir neden yoktur.

Sık sorulan sorular

SHA-256 nedir, kısaca?

SHA-256, ABD standartlar kurumu NIST'in FIPS 180-4 standardında tanımlanan ve her uzunluktaki veriden 256 bitlik sabit bir özet üreten kriptografik hash fonksiyonudur. Özet genellikle 64 karakterlik onaltılık bir metin olarak yazılır. Dosya doğrulama, dijital imza, TLS bağlantıları ve blokzincir gibi birçok yerde kullanılır.

SHA-256 çözülebilir mi?

Hayır. SHA-256 bir şifreleme değil, tek yönlü bir özet fonksiyonudur; özetten asıl veriyi geri hesaplayan bir anahtar veya yöntem yoktur. "SHA-256 çözücü" diye sunulan araçlar yalnızca daha önce hesaplanmış kısa ve yaygın metinlerin özetlerini bir tabloda arar. Uzun ve rastgele bir metnin özetini bu yolla bulmak mümkün değildir.

SHA-256 kaç karakterdir?

SHA-256 özeti 256 bit, yani 32 bayttır. Onaltılık (hex) gösterimde her bayt iki karakterle yazıldığı için 64 karakter eder. Base64 ile yazıldığında 44 karakter olur. Girdi tek harf de olsa, birkaç gigabaytlık bir dosya da olsa bu uzunluk değişmez.

SHA-256 hâlâ güvenli mi?

Evet. Bugün SHA-256 için bilinen pratik bir çakışma veya ön görüntü saldırısı yoktur ve NIST, SHA-2 kullanan uygulamaların SHA-3'e geçmesine şu an gerek olmadığını belirtir. Ancak şifre saklamak için tek başına uygun değildir; bunun için bcrypt, scrypt veya Argon2 gibi yavaş ve tuzlu yöntemler kullanılır.

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

İkisi de SHA-2 ailesindendir. SHA-256 32 bitlik sözcüklerle 512 bitlik bloklar üzerinde çalışıp 256 bitlik özet verir; SHA-512 ise 64 bitlik sözcüklerle 1024 bitlik bloklar üzerinde çalışır ve 512 bitlik özet verir. SHA-512 daha uzun güvenlik payı sunar, SHA-256 ise daha yaygın desteklenir ve çoğu iş için yeterlidir.