Skip to main content

SHA Hash Oluşturucu

Tarayıcınızın Web Crypto API desteğiyle SHA-1, SHA-256, SHA-384 ve SHA-512 özeti oluşturun. UTF-8 ve satır sonu farklarını açıkça yönetir.

Veriler tarayıcınızdan çıkmazGüncelleme: Temmuz 2026
Satır sonu

Girdi her zaman UTF-8 olarak kodlanır. Aynı metin farklı kodlamada farklı özet üretir. Satır sonu farkı özeti değiştirir: "a\n" ile "a\r\n" farklı SHA-256 değeri üretir.

SHA-1

Güvenlik için kullanmayın

da39a3ee5e6b4b0d3255bfef95601890afd80709

SHA-256

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

SHA-384

38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b

SHA-512

cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e

Özet (TL;DR)

  • Özetleme şifreleme değildir: tek yönlüdür ve bir özeti "çözmek" diye bir işlem yoktur.
  • MD5 burada bilerek yok. Web Crypto API (crypto.subtle.digest) MD5'i hiç uygulamaz, çünkü algoritma kırılmıştır.
  • SHA-1 mevcut ama çakışmaya karşı kırık: git nesne kimlikleri gibi güvenlik dışı kullanımlar için uygundur, imza için değildir.
  • Parola saklamak için SHA-256 kullanmayın. Bunun için bcrypt, scrypt veya Argon2 gerekir.

MD5 neden bu araçta yok

Bu soru sık geliyor, çünkü çevrimiçi özet araçlarının neredeyse tamamı MD5 sunuyor. Cevap teknik ve nettir: tarayıcının yerleşik kriptografi arayüzü olan crypto.subtle.digest yalnızca SHA-1, SHA-256, SHA-384 ve SHA-512 uygular. MD5 spesifikasyonda hiç yer almaz ve bu bir eksiklik değil, bilinçli bir tasarım kararıdır. MD5 için pratik çakışma üretme yöntemleri 2004'ten beri biliniyor: aynı özete sahip iki farklı girdiyi saniyeler içinde üretebilirsiniz. Standart, kırık bir algoritmayı platform yüzeyine taşımayı reddetti.

MD5'i buraya eklemenin tek yolu, elle yazılmış bir JavaScript uygulamasını sayfaya dahil etmek olurdu. Bu hem gereksiz kod ağırlığı hem de yanlış bir mesaj anlamına gelir. Eski bir dosya sağlama toplamını doğrulamak gibi meşru bir nedenle MD5'e ihtiyacınız varsa komut satırında md5sum veya openssl dgst -md5 kullanın; yeni bir sistem tasarlıyorsanız MD5 hiçbir katmanda doğru cevap değildir.

Algoritmalar ve özet uzunlukları

AlgoritmaÖzet uzunluğuOnaltılık karakterDurum
SHA-1160 bit40Çakışmaya karşı kırık (SHAttered, 2017)
SHA-256256 bit64Güvenli, yaygın varsayılan
SHA-384384 bit96Güvenli, SHA-512 tabanlı kısaltma
SHA-512512 bit128Güvenli, 64 bitlik sistemlerde hızlı
Onaltılık gösterimde her bayt iki karakter tuttuğu için karakter sayısı bit sayısının sekizde birinin iki katıdır.

SHA-1 listede duruyor çünkü hâlâ meşru kullanım alanları var. Git nesne kimlikleri, eski dosya envanterleri ve kaza sonucu bozulmayı yakalamayı amaçlayan sağlama toplamları bunlara örnek. Buradaki ayrım şudur: SHA-1 rastgele bozulmayı yakalamakta hâlâ iyidir, ama kasıtlı bir saldırgana karşı değildir. 2017'de yayımlanan SHAttered çalışması aynı SHA-1 özetine sahip iki geçerli PDF üretti. Dolayısıyla imza, sertifika veya bütünlük kanıtı gerektiren hiçbir yerde kullanılmamalıdır. Araç bunu arayüzde açıkça etiketler.

Özetleme şifreleme değildir

En sık karşılaşılan yanlış anlama "bu özeti nasıl çözerim" sorusudur. Çözülemez. Özet fonksiyonu tek yönlüdür: girdi ne kadar uzun olursa olsun sabit uzunlukta bir çıktı üretir ve bu süreçte bilgi geri döndürülemez biçimde kaybolur. 10 megabaytlık bir dosya da 64 karakterlik bir SHA-256 özetine iner; ters çevirme matematiksel olarak mümkün değildir.

"MD5 çözücü" veya "SHA-1 kırıcı" diye tanıtılan siteler aslında ters çevirme yapmaz. Önceden hesaplanmış devasa tablolarda arama yaparlar. Girdiniz yaygın bir parola veya kısa bir kelimeyse tabloda bulunur, rastgele bir metinse bulunmaz. Bu, algoritmanın kırıldığını değil, girdinin tahmin edilebilir olduğunu gösterir.

Parolalar için SHA-256 yanlış araçtır

SHA ailesi hızlı olacak şekilde tasarlandı. Bu, dosya doğrulama için istediğiniz özelliktir ve parola saklama için tam olarak istemediğiniz özelliktir. Sıradan bir ekran kartı saniyede milyarlarca SHA-256 hesaplayabilir, yani sızan bir parola tablosunda zayıf parolalar dakikalar içinde bulunur. Doğru çözüm, kasıtlı olarak yavaş ve bellek maliyetli tasarlanmış parola özet fonksiyonlarıdır.

javascript
// YANLIŞ: hızlı olması saldırganın işine yararconst ozet = await crypto.subtle.digest('SHA-256', utf8('parolam')); // DOĞRU: sunucu tarafında, tuz ve maliyet parametresiyleimport { hash, verify } from '@node-rs/argon2'; const saklanan = await hash('parolam', {  memoryCost: 19456, // KiB  timeCost: 2,  parallelism: 1,});// $argon2id$v=19$m=19456,t=2,p=1$<tuz>$<ozet> await verify(saklanan, girilenParola); // true / false

Uyarı

Argon2id bugünün önerilen seçimidir; bcrypt ve scrypt de kabul edilebilir. Bu fonksiyonlar tuzu kendileri üretip çıktının içine gömer, yani ayrı bir tuz sütunu tutmanıza gerek yoktur. Parola özetleme her zaman sunucuda yapılır; tarayıcıda hesaplanan bir özet, sunucu açısından sadece yeni bir paroladır.

Özetim neden eşleşmiyor

İki taraf aynı metni özetlediğini düşünürken farklı sonuç alıyorsa sebep neredeyse her zaman baytlardadır. Özet fonksiyonu karakter değil bayt görür, dolayısıyla kodlama ve satır sonu farkları doğrudan çıktıya yansır. Bu araç girdiyi her zaman UTF-8 olarak kodlar ve satır sonlarını normalleştirmeyi ayrı bir seçenek olarak sunar.

javascript
// Satır sonu: Windows CRLF ile Unix LF farklı baytlardırsha256('a\n');   // 87428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7sha256('a\r\n'); // 5f0e50e17b1b1cbbbee2b5a0b0d8db9d0e6ff7b7e6ba4b70cd7d38ae0a6d3b28 // Kodlama: aynı görünen metin farklı baytlar üretirnew TextEncoder().encode('ş');        // [0xC5, 0x9F]  UTF-8, 2 bayt// ISO-8859-9 (Türkçe Latin-5) aynı harfi tek bayt olarak yazar: [0xFE]// Aynı harf, farklı bayt, farklı özet. // Görünmez BOM da metnin bir parçasıdırsha256('merhaba') !== sha256('\uFEFFmerhaba');

Sıkça Sorulan Sorular

Girdiğim metin sunucuya gönderiliyor mu?
Hayır. Özet hesaplaması tarayıcınızdaki Web Crypto API ile yapılır ve hiçbir ağ isteği içermez. Sayfa yüklendikten sonra internet bağlantınızı kesseniz bile araç çalışır. Gizli bir metnin özetini alırken bu davranış önemlidir.
Aynı girdi her zaman aynı özeti mi verir?
Evet, bayt düzeyinde aynı girdi her zaman aynı çıktıyı verir; bu özetlemenin temel özelliğidir. Farklı sonuç alıyorsanız girdiler bayt olarak aynı değildir: satır sonu, sondaki boşluk, kodlama farkı veya görünmez bir BOM karakteri en olası nedenlerdir.
Bir özeti geri çevirip orijinal metni bulabilir miyim?
Hayır. Özet fonksiyonu tek yönlüdür ve girdi hakkındaki bilgi geri döndürülemez biçimde kaybolur. Kendini "çözücü" olarak tanıtan siteler, önceden hesaplanmış tablolarda arama yapar; yalnızca girdi yaygın ve kısaysa sonuç bulurlar.
SHA-256 mı SHA-512 mi seçmeliyim?
Güvenlik açısından ikisi de bugün için yeterlidir. SHA-256 daha yaygın kabul görür ve çıktısı daha kısadır. SHA-512, 64 bitlik işlemcilerde büyük girdiler için genellikle daha hızlıdır. Belirli bir standart sizi zorlamıyorsa SHA-256 mantıklı varsayılandır.
Dosya özeti alabilir miyim?
Bu araç metin girdisiyle çalışır. Bir dosyanın özetini almak için komut satırında shasum -a 256 dosya veya Windows üzerinde certutil -hashfile dosya SHA256 komutunu kullanmak daha pratiktir; büyük dosyalar tarayıcı belleğine yüklenmeden akış halinde işlenir.

Mustafa Kürşad BAŞER

Yazılım Mühendisi

Karmaşık sorunları zarif çözümlerle buluşturan, öğrendiklerini paylaşarak değer katmayı seven bir yazılım mühendisi.

Hızlı Erişim

Bağlantı

© 2026 Mustafa Kürşad BAŞER. Tüm hakları saklıdır.