Hello, World! metninin SHA-256 hash'i: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f. Kendiniz doğrulayın, SHA-256 nasıl çalışır öğrenin.
Hello, World! metninin SHA-256 hash’i:
dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
Bu, 256 biti temsil eden 64 onaltılık karakterdir. Bunu herhangi bir ortamda doğrulayabilirsiniz:
# Terminal (macOS/Linux)
echo -n "Hello, World!" | sha256sum
# macOS alternatifi
echo -n "Hello, World!" | shasum -a 256
# Python
import hashlib
hashlib.sha256(b"Hello, World!").hexdigest()
# Node.js
const crypto = require('crypto');
crypto.createHash('sha256').update('Hello, World!').digest('hex');
Hepsi dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f döndürmelidir. Farklı bir sonuç alırsanız, sondaki yeni satırı kontrol edin. -n olmadan echo bir yeni satır ekler, girdiyi ve hash’i değiştirir.
SHA-256, 2001’de NIST tarafından standartlaştırılan SHA-2 ailesinin bir parçasıdır. İsteğe bağlı uzunlukta bir girdi alır ve sabit 256-bit çıktı üretir. Algoritma birkaç aşamada çalışır:
Girdi, uzunluğu 512 bit mod 448’e uygun olacak şekilde doldurulur. Orijinal mesaj uzunluğunun 64-bit temsili eklenir. Bu, toplam uzunluğun 512 bitin katı olmasını sağlar.
Doldurulmuş girdi, 512-bit bloklara bölünür. Her blok, bit düzeyinde işlemler (XOR, sağa kaydırmalar, döndürmeler) kullanılarak 64 adet 32-bit kelimeye genişletilir.
Bir sıkıştırma fonksiyonu, 64 kelime artı ilk 64 asal sayının küp köklerinin kesirli kısımlarından türetilen 64 yuvarlak sabiti kullanarak geçerli hash durumunda 64 tur çalıştırır. Durum, ilk 8 asal sayının kesirli kareköklerinden başlatılan sekiz adet 32-bit değişkendir (a’dan h’ye).
Tüm bloklar işlendikten sonra, sekiz durum değişkeni birleştirilerek 256-bit çıktı üretilir.
Aynı girdi her zaman aynı hash’i üretir. Hello, World! her zaman dffd6021... olur. Bu, hash’leri kararlı tanımlayıcılar olarak kullanışlı kılar.
Tek bir karakter ve 10 GB’lık bir dosyanın her ikisi de 256-bit hash üretir. Bu özellik, hash’leme işlemini dosyaları içeriklerini bayt bayt karşılaştırmadan karşılaştırmak için kullanışlı kılar.
Girdideki tek bir biti değiştirmek, çıktıyı tamamen değiştirir. Hello, World! ve Hello, World? neredeyse hiçbir biti paylaşmayan hash’ler üretir. Bu, hash’teki küçük değişikliklerden girdi hakkında hiçbir şey çıkarılamayacağı anlamına gelir.
Bir hash verildiğinde, girdiyi bulmak için geriye doğru çalışamazsınız. Bu, parola hash’leme (üst düzeyde) ve dijital imzaların temelidir.
Bir yazılım indirdiğinizde, proje genellikle ikili dosyanın yanında bir SHA-256 sağlama toplamı yayınlar. İndirilen dosyayı hash’ler ve karşılaştırırsınız. Eşleşirlerse, dosya aktarım sırasında kurcalanmamıştır.
sha256sum downloaded-file.tar.gz
# yayınlanan sağlama toplamı ile karşılaştırın
Bitcoin’in iş ispatı (proof of work) algoritması, madencilerin SHA-256(SHA-256(block_header)) işleminin hedef değerin altında bir hash ürettiği bir nonce bulmasını gerektirir. Çift SHA-256 yapısı Satoshi Nakamoto tarafından, tek SHA-256’yı etkileyen uzunluk uzatma saldırılarına karşı savunma yapmak için seçilmiştir.
X.509 sertifikaları, içeriklerinin bir hash’i ile imzalanır. SHA-256, sertifika imzaları için standarttır; SHA-1, 2017 civarında güvenilen sertifika otoritelerinden kaldırılmıştır.
HMAC-SHA-256, SHA-256’yı bir mesaj kimlik doğrulama kodunda temel hash olarak kullanır. JWT imza doğrulamasında (HS256), AWS istek imzalamada ve birçok API kimlik doğrulama şemasında kullanılır.
Git, her dosyayı, dizin ağacını ve commit’i içerik adresli bir nesne olarak saklar. Nesnenin SHA’sı (tarihsel olarak SHA-1, SHA-256’ya geçiş yapılıyor) içeriğinden hesaplanır ve hem depolama anahtarı hem de bütünlük kontrolü olarak kullanılır.
SHA-256, kasıtlı olarak hızlıdır. Dosya bütünlüğü ve dijital imzalar için hız arzu edilir. Parola hash’leme için bu bir yükümlülüktür. GPU’ya sahip bir saldırgan saniyede milyarlarca SHA-256 hash’i hesaplayabilir, bu da SHA-256 ile hash’lenmiş bir parola veritabanına karşı kaba kuvvet ve sözlük saldırılarını pratik hale getirir.
Bunun yerine, amaca yönelik oluşturulmuş bir parola hash’leme fonksiyonu kullanın:
argon2id varyantını tercih edin.Bu fonksiyonlar, kullanıcı başına rastgele bir tuz içerir (gökkuşağı tablosu saldırılarını önler) ve donanım geliştikçe yavaşlatılmak üzere tasarlanmıştır.
Parola depoluyorsanız, tuzlu bile olsa doğrudan SHA-256 kullanmayın. bcrypt veya Argon2 kullanın.
| Algoritma | Çıktı uzunluğu | Durum |
|---|---|---|
| MD5 | 128 bit (32 hex karakter) | Kırık. Pratik çarpışma saldırıları var |
| SHA-1 | 160 bit (40 hex karakter) | Kırık. SHAttered saldırısı (2017) pratik çarpışma gösterdi |
| SHA-256 | 256 bit (64 hex karakter) | Güvenli. Bilinen zayıflık yok |
| SHA-3-256 | 256 bit (64 hex karakter) | Güvenli. Farklı iç yapı (Keccak sponge) |
MD5 ve SHA-1, çarpışma direncinin önemli olmadığı güvenlik dışı bağlamlarda (hata tespiti için sağlama toplamları, eski sistem tanımlayıcıları) hala kullanılmaktadır. Bir saldırganın aynı hash’e sahip iki girdi üretmeye çalışabileceği herhangi bir bağlamda (sertifika sahteciliği, dosya değiştirme, imza sahteciliği) yalnızca SHA-256 veya daha güçlüsü kullanılmalıdır.
Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.