SHA-256 Hash Oluşturucu

Metnin, onaltılık baytların veya herhangi bir dosyanın SHA-256 özetini tarayıcınızdaki Web Crypto API ile hesaplayın. İndirdiğiniz bir dosyayı doğrulamak için yayımlanan sağlama toplamını "Karşılaştırılacak değer" alanına yapıştırın.

Tüm algoritmalar

Tamamen tarayıcınızda çalışır. Hiçbir veri yüklenmez.

Nasıl kullanılır

  1. Metni yazın veya yapıştırın, girdi biçimini "Onaltılık" olarak değiştirin ya da "Dosya aç" ile kontrol etmek istediğiniz dosyayı açın.
  2. SHA-256'yı seçili bırakın ve çıktı olarak "hex (küçük harf)", "HEX (büyük harf)" veya "Base64" seçin.
  3. İndirme sayfasındaki sağlama toplamını "Karşılaştırılacak değer" alanına yapıştırın. "Eşleşiyor" sonucu, dosyanın birebir aynı olduğu anlamına gelir.
  4. Sonucu kopyalayın ya da "Tüm algoritmalar" tablosundan SHA-384, SHA-512 veya başka bir özeti kopyalayın.

SHA-256 nedir?

SHA-256, SHA-2 ailesinin en yaygın kullanılan üyesidir; NSA tarafından tasarlanmış ve 2002'de NIST tarafından FIPS 180-2 ile standartlaştırılmıştır. Bugün FIPS 180-4'te tanımlanır; RFC 6234 ise aynı algoritmaları referans koduyla birlikte sunar. SHA-256, 512 bitlik blokları 32 bitlik aritmetikle 64 turda işler ve 256 bitlik bir özet üretir: 64 hex karakteri veya 44 Base64 karakteri. Bilinen pratik bir çakışma veya ön görüntü (preimage) saldırısı yoktur ve şu alanlarda varsayılan tercihtir:

  • TLS sertifikaları ve el sıkışmaları ile kod imzalama;
  • blok hash'leri, iş ispatı (proof of work) ve işlem kimlikleri için SHA-256'yı iki kez uygulayan Bitcoin (Base58Check adreslerindeki sağlama toplamı da aynı çift hash'ten gelir);
  • SHA256SUMS gibi sağlama toplamı dosyaları, konteyner imajı özetleri (sha256:...) ve Subresource Integrity.

İndirilen bir dosyayı doğrulama

İndirdiğiniz dosyayı açın ve yayıncının sağlama toplamını "Karşılaştırılacak değer" alanına yapıştırın. Büyük/küçük harf fark etmez; Base64 bir değer de kullanılabilir. "Eşleşiyor" sonucu, dosyanın sağlama toplamının üretildiği dosyayla bayt bayt aynı olduğunu gösterir. Ancak dosyayı kimin hazırladığını kanıtlamaz; bu nedenle sağlama toplamını, dosyayı sunan yansı sunucusundan (mirror) değil, yayıncının HTTPS sitesinden veya imzalı bir SHA256SUMS dosyasından alın.

Metinlerde hash, karakterleri değil baytları kapsar. Windows satır sonları (CRLF), bir bayt sırası işareti (BOM) ya da UTF-8 yerine UTF-16 kullanmak, her biri tamamen farklı bir SHA-256 üretir. Başka bir sistemin hash'lediği baytların tam olarak aynısını hash'lemek için "Metin kodlaması" listesini veya onaltılık girdiyi kullanın.

Uzunluk genişletme ve parolalar

MD5, SHA-1 ve SHA-512 gibi SHA-256 de uzunluk genişletme (length extension) saldırısına açıktır: SHA-256(secret + message) değeri ve gizli değerin uzunluğu biliniyorsa saldırgan, gizli değeri bilmeden, o mesajın ardına dolgu ve kendi seçtiği verilerin eklendiği hâli için geçerli bir hash hesaplayabilir. Verileri bir anahtarla imzalamak veya kimlik doğrulaması yapmak için anahtarı ve mesajı birlikte hash'lemek yerine HMAC Oluşturucu ile HMAC-SHA256 kullanın.

Hız, tek başına SHA-256'nın parola saklamak için yanlış bir yöntem olmasının da nedenidir: hash'leri ele geçiren herkes, ekran kartları SHA-256'yı ne kadar hızlı hesaplıyorsa o hızda tahmin deneyebilir; üstelik aynı parolalar aynı hash'leri üretir. Argon2id, scrypt, bcrypt veya yüksek yineleme sayısıyla PBKDF2-HMAC-SHA256 kullanın; bunların hepsi tuz ekler.

Komut satırında ve kodda SHA-256

$ printf 'abc' | sha256sum
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad  -

sha256sum -c SHA256SUMS                  # Linux: dosya listesini doğrula
shasum -a 256 file.iso                   # macOS
certutil -hashfile file.iso SHA256       # Windows
Get-FileHash file.iso                    # PowerShell (varsayılan SHA256)

# Python
hashlib.sha256(data).hexdigest()

// Node.js
crypto.createHash('sha256').update(data).digest('hex')

abc için verilen değer standarttaki test vektörüdür; aynı sonucu görmek için yukarıya abc yazın. "Tüm algoritmalar" tablosu girdiniz için SHA-384, SHA-512, SHA-1, MD5 ve CRC değerlerini de listeler.

Örnekler

Girdi (UTF-8)SHA-256
Hello, World!dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
Base64.is63f2f446bc11a1f96175c0f77bdac08ca1b184ba42c3a42c34ddcbce00b1b800
你好670d9743542cae3ea7ebe36af56bd53648b0a1126162e78d81a32934a711302e

Sıkça sorulan sorular

SHA-256'nın şifresi çözülebilir mi?

Hayır. SHA-256 bir şifreleme değil, tek yönlü bir hash fonksiyonudur. Çevrimiçi "şifre çözücüler" hash değerlerini yalnızca bilinen girdilerden oluşan tablolarda arar; bu yüzden yaygın parolaları ve kısa dizeleri bulabilirler, ancak uzun veya rastgele hiçbir şeyi bulamazlar.

SHA-256 değerim neden yayımlanan sağlama toplamıyla eşleşmiyor?

Çoğu zaman indirme yarım kalmıştır, dosya farklı bir sürümdür ya da dosyanın kendisi yerine adını hash'lemişsinizdir. Dosyanın kendisini "Dosya aç" ile yükleyin. Ayrıca iki değerin de aynı algoritmaya ait olduğunu kontrol edin: 128 karakterlik bir hex değeri SHA-256'dan değil, SHA-512 gibi 512 bitlik bir hash'ten gelir.

SHA-256 hash değerini Base64 olarak nasıl alırım?
"Çıktı biçimi" ayarını Base64 yapın. Subresource Integrity (sha256- değerleri, ancak sha384- daha yaygındır) ve HTTP Content-Digest başlığı bu biçimi kullanır. Hex ve Base64 aynı 32 baytı taşır; ikisi arasında Base64'ten Hex'e aracıyla dönüşüm yapabilirsiniz.
SHA-256 ile SHA-2 aynı şey mi?

SHA-2 bir ailedir: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 ve SHA-512/256. SHA-256 bu ailenin en yaygın üyesidir. SHA-3 (FIPS 202) ise Keccak tabanlı ayrı bir tasarımdır ve farklı sonuçlar verir.

SHA-256 hash değeri ne kadar uzundur?
32 bayt: 64 hex karakteri veya = ile biten 44 Base64 karakteri. SHA3-256 ve BLAKE2s de aynı uzunluktadır; Hash Tanımlayıcı, bilinmeyen bir hash için bu tür olası algoritmaları listeler.