Hash Generator

"Merhaba, Dünya!" SHA-256 Hash'i: Hash Oluşturucu

Hello, World! metninin SHA-256 hash'i dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f'dir. Kendiniz doğrulayın ve SHA-256'nın nasıl çalıştığını öğrenin.

Verileriniz tarayıcınızdan çıkmaz.

Hash'ler
MD5
SHA-1
SHA-256
SHA-512

İlgili Araçlar

“Hello, World!” Metninin SHA-256 Hash’i

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 Gerçekte Ne Yapar

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:

Ön işleme

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.

Mesaj çizelgesi

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.

Sıkıştırma

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).

Son hash

Tüm bloklar işlendikten sonra, sekiz durum değişkeni birleştirilerek 256-bit çıktı üretilir.

Önemli Olan Dört Özellik

Belirleyici (Deterministic)

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.

Sabit uzunluklu çıktı

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.

Çığ etkisi (Avalanche effect)

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.

Ön görüntü direnci (Preimage resistance)

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.

SHA-256 Nerelerde Kullanılır

Dosya bütünlük doğrulaması

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

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.

TLS sertifika doğrulaması

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 yapısı

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 nesne depolama

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 Parola Depolama İçin Yeterli Değildir

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:

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.

SHA-256, SHA-1 ve MD5 Karşılaştırması

AlgoritmaÇıktı uzunluğuDurum
MD5128 bit (32 hex karakter)Kırık. Pratik çarpışma saldırıları var
SHA-1160 bit (40 hex karakter)Kırık. SHAttered saldırısı (2017) pratik çarpışma gösterdi
SHA-256256 bit (64 hex karakter)Güvenli. Bilinen zayıflık yok
SHA-3-256256 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.