SHA-1 Hash Oluşturucu

Herhangi bir metinden SHA-1 hash oluştur

Giriş Metni

Yerel olarak çalışır · Gizli bilgi yapıştırmak güvenlidir

SHA-1 Hash

SHA-1 hash burada görüntülenecek…

SHA-1 Hashing Nedir?

SHA-1 (Secure Hash Algorithm 1), herhangi bir girdiden sabit 160 bit (20 bayt) özet üreten bir kriptografik hash fonksiyonudur. NSA tarafından yayımlanan ve NIST tarafından 1995 yılında FIPS PUB 180-1 olarak standartlaştırılan, daha sonra RFC 3174 ile belgelenen SHA-1; SHA-0 ve MD5'in daha güçlü bir halefi olarak tasarlanmıştır. Algoritma, girdiyi 512 bitlik bloklarda 80 tur bitsel işlemden geçirerek on yılı aşkın süre boyunca SSL/TLS, PGP, SSH ve IPsec'in temelini oluşturan 40 karakterlik onaltılık bir parmak izi üretir.

Tüm kriptografik hash fonksiyonları gibi SHA-1 de tek yönlü bir dönüşümdür: girdiden hash hesaplamak hızlıdır, ancak yalnızca hash'ten özgün girdiyi kurtarmak hesaplama açısından olanaksızdır. Girdideki tek bitlik bir değişiklik bile tamamen farklı bir 160 bitlik özet üretir; bu özellik çığ etkisi olarak adlandırılır. SHA-1, rastgele büyük bir girdi uzayını sabit 160 bitlik bir çıktıya eşler; bu nedenle çakışmaların (iki farklı girdinin aynı hash'i üretmesi) matematiksel olarak var olması zorunludur. Bir hash fonksiyonunun güvenlik iddiası, bu tür çakışmaların bulunmasının yaklaşık 2^80 işlem gerektirmesi gerektiğidir — çıktı bit uzunluğunun yarısı.

2017 yılında Google ve CWI Amsterdam, aynı özete sahip iki farklı PDF dosyası üreterek ilk pratik SHA-1 çakışmasını gösteren SHAttered saldırısını yayımladı. Saldırı yaklaşık 2^63.1 SHA-1 hesabı gerektirdi — teorik 2^80 sınırının çok altında. 2020'de Gaetan Leurent ve Thomas Peyrin, yaklaşık 2^63.4 işlem gerektiren seçilmiş ön ek çakışma saldırısıyla maliyeti daha da düşürdü. Sonuç olarak tüm büyük tarayıcılar, sertifika otoriteleri ve standart kuruluşları SHA-1'i dijital imzalar ve TLS sertifikaları için kullanımdan kaldırdı. Ancak SHA-1, güvenlik dışı amaçlar için hâlâ aktif kullanımdadır: Git nesne kimlikleri (Git SHA-256'ya geçiş yaparken), eski HMAC yapılandırmaları ve düşman çakışma direncinin gerekli olmadığı dosya bütünlüğü sağlama toplamları.

Bu SHA-1 Oluşturucuyu Neden Kullanmalısınız?

Herhangi bir şey yüklemeden veya kod yazmadan SHA-1 hash'lerini anında oluşturun. Metninizi yapıştırın ve 40 karakterlik onaltılık özeti gerçek zamanlı alın — eski sağlama toplamlarını doğrulamak, Git iç işlemlerini hata ayıklamak veya hash tabanlı iş akışlarını test etmek için kullanışlıdır.

Anında Hash Oluşturma
Çıktı siz yazarken güncellenir. Düğmeye tıklamaya veya beklemeye gerek yok — SHA-1 özeti girdiyi değiştirdikçe karakter karakter belirir.
🔒
Gizlilik Öncelikli İşleme
Tüm hash işlemleri Web Crypto API kullanılarak tarayıcınızda yerel olarak çalışır. Girdi metniniz cihazınızdan ayrılmaz ve hiçbir sunucuya gönderilmez.
📋
Tek Tıkla Kopyalama
Hash'i tek tıklamayla panoya kopyalayın. Sisteminizin beklediği biçime uyacak şekilde küçük harf ve büyük harf onaltılık çıktı arasında geçiş yapın.
🔍
Hesap Gerekmez
Kayıt yok, giriş yok, kullanım sınırı yok. Sayfayı açın ve hemen hash oluşturmaya başlayın. Modern tarayıcısı olan her cihazda çalışır.

SHA-1 Kullanım Alanları

Git İç İşlemleri ve Hata Ayıklama
Git, her nesneyi (commit, ağaç, blob, etiket) SHA-1 hash'iyle tanımlar. Git altyapı komutlarında hata ayıklarken, paket dosyalarını doğrularken veya özel Git araçları yazarken hızlı bir SHA-1 oluşturucu, nesne kimliklerini beklenen değerlerle karşılaştırmanıza yardımcı olur.
Eski Sistem Doğrulama
Pek çok eski sistem, paket kayıt defteri ve ürün yazılımı güncelleme mekanizması indirmelerle birlikte hâlâ SHA-1 sağlama toplamları yayımlar. SHA-256 özetleri mevcut olmadığında dosya bütünlüğünü doğrulamak için SHA-1 hash'leri oluşturun ve karşılaştırın.
Alt Kaynak Bütünlüğü (SRI)
HTML script ve link etiketlerindeki SRI hash'leri için sha256 ve sha384 tercih edilse de bazı eski CDN yapılandırmaları hâlâ SHA-1'e dayanır. Mevcut SRI özelliklerini denetlemek veya geçiş yapmak için beklenen özeti oluşturun.
QA ve Regresyon Testi
Büyük çıktıların bayt bayt karşılaştırmasını yapmadan test çalışmaları arasındaki beklenmedik değişiklikleri tespit etmek için API yanıtlarının, derleme eserlerinin veya veritabanı anlık görüntülerinin SHA-1 hash'lerini karşılaştırın.
Veri Tekilleştirme
ETL süreçlerinde kopyaları belirlemek için dosya içeriklerinin veya veri kayıtlarının SHA-1 hash'lerini hesaplayın. 160 bitlik çıktı, düşman içermeyen tekilleştirme senaryolarında MD5'e göre daha güçlü benzersizlik garantisi sağlar.
Öğrenme ve Eğitim
SHA-1, kapsamlı akademik literatüre sahip iyi belgelenmiş bir algoritmadır. Merkle-Damgård yapısını, ileti zamanlamasını ve çıktı uzunluğu modern hesaplama gücüne göre çok kısa olduğunda çakışma direncinin neden bozulduğunu anlamak için deneyin.

SHA-1 ile Diğer Hash Algoritmalarının Karşılaştırması

SHA-1, 160 bitlik özet üretir — MD5'ten (128 bit) uzun ama SHA-2 ailesi algoritmalarından önemli ölçüde kısa. Aşağıdaki tablo her algoritma için özet boyutlarını, standartları ve uygun kullanım alanlarını karşılaştırmaktadır.

AlgoritmaÖzet BoyutuOnaltılık UzunlukStandartEn İyi Kullanım
SHA-1160 bits40 hex chars1995 / RFC 3174Deprecated — legacy git commits, old TLS
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
MD5128 bits32 hex chars1992 / RFC 1321Checksums only — broken since 2004
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, alternative to SHA-2
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

SHA-1 Nasıl Çalışır?

SHA-1, Merkle-Damgård yapısını izler: ileti doldurulur, 512 bitlik bloklara bölünür ve her blok, girdiyi bloktan türetilen bir ileti zamanlamasıyla karıştıran 80 tur bitsel işlemden geçirilir. Beş 32 bitlik durum sözcüğü (H0'dan H4'e) sürekli hash durumunu taşır ve bu sözcüklerin son birleşimi 160 bitlik özeti üretir.

Input: "hello world"
SHA-1: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
(160 bits = 20 bytes = 40 hex characters)
AdımAçıklama
PaddingAppend a 1-bit, then zeros, until message length is 448 mod 512. Append the original length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
ExpansionExpand each 16-word block into 80 words using a left-rotate-by-1 XOR feedback schedule.
CompressionProcess 80 rounds per block using four nonlinear functions (Ch, Parity, Maj, Parity) across rounds 0-19, 20-39, 40-59, and 60-79.
OutputConcatenate the five 32-bit state words (H0-H4) into a 160-bit (20-byte) digest, rendered as 40 hexadecimal characters.

SHA-1 ile MD5 arasındaki temel fark, durum sözcükleri sayısı (5'e karşı 4), blok başına tur sayısı (80'e karşı 64) ve sola döndürme geri beslemeli ileti zamanlamasının kullanımıdır. Bu farklar SHA-1'e daha büyük bir çıktı (160'a karşı 128 bit) ve başlangıçta daha yüksek bir güvenlik payı sağlar; ancak her iki algoritma da artık çakışma direnci açısından kırık kabul edilmektedir.

Kod Örnekleri

Popüler diller ve ortamlarda SHA-1 hash oluşturma. MD5'in aksine SHA-1, tarayıcı Web Crypto API'sinde mevcuttur; bu sayede hem tarayıcı hem de Node.js ortamlarında harici kütüphanelere gerek kalmadan kullanılabilir.

JavaScript (Web Crypto API — browser & Node.js)
// SHA-1 is available in the Web Crypto API
async function sha1(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-1', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha1('hello world')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha1').update('hello world').digest('hex')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
Python
import hashlib

# Basic SHA-1 hash
result = hashlib.sha1(b'hello world').hexdigest()
print(result)  # → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a string (encode to bytes first)
text = 'hello world'
hashlib.sha1(text.encode('utf-8')).hexdigest()
# → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a file in chunks
with open('file.bin', 'rb') as f:
    sha1 = hashlib.sha1()
    for chunk in iter(lambda: f.read(8192), b''):
        sha1.update(chunk)
    print(sha1.hexdigest())
Go
package main

import (
    "crypto/sha1"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha1.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
}
CLI (Linux / macOS)
# Using sha1sum (Linux) or shasum (macOS)
echo -n "hello world" | sha1sum
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# macOS
echo -n "hello world" | shasum -a 1
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# Hash a file
sha1sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl sha1
# → SHA1(stdin)= 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

Sıkça Sorulan Sorular

SHA-1 hâlâ kullanmak için güvenli midir?
SHA-1, güvenlik açısından hassas uygulamalar için güvenli değildir. 2017 SHAttered saldırısı pratik çakışma üretimini kanıtladı ve 2020 seçilmiş ön ek saldırısı maliyeti daha da düşürdü. Dijital imzalar, TLS sertifikaları veya bir düşmanın çakışan girdiler üretebileceği her senaryoda bunun yerine SHA-256 veya SHA-3 kullanın. Sağlama toplamları ve önbellek anahtarları gibi hiçbir düşmanın girdiyi kontrol etmediği güvenlik dışı amaçlar için SHA-1 işlevselliğini korumaktadır.
SHA-1 ile SHA-256 arasındaki fark nedir?
SHA-1, 160 bitlik (40 onaltılık karakter) özet üretir ve çakışma saldırılarına karşı savunmasızdır. SHA-256 ise 256 bitlik (64 onaltılık karakter) özet üretir ve bilinen pratik bir saldırısı olmayan SHA-2 ailesine aittir. SHA-256, aynı donanımda SHA-1'den yaklaşık %20-30 daha yavaştır; ancak 96 bit fazladan çıktı ve bilinen yapısal zayıflıkların yokluğu onu her yeni proje için varsayılan öneri hâline getirir.
Git neden SHA-1 kullanır?
Linus Torvalds 2005'te Git'i tasarlarken SHA-1 güvenli kabul ediliyordu ve içerik adreslenebilir depolama için hız ile çakışma direnci arasında iyi bir denge sunuyordu. Git, SHA-1'i bir güvenlik mekanizması olarak değil içerik tanımlayıcısı olarak kullanır — kasıtlı müdahaleyi değil, yanlışlıkla bozulmayı tespit eder. 2021'den bu yana Git, git-hash-function-transition planında açıklanan hash uzantı çerçevesi aracılığıyla SHA-256'ya geçiş yapmaktadır.
SHA-1 hash'i özgün girdiye geri çevrilebilir mi?
Hayır. SHA-1, hashing sırasında bilgiyi atan tek yönlü bir fonksiyondur. Kısa veya yaygın girdiler için saldırganlar özgün düz metni bulmak amacıyla gökkuşağı tabloları veya kaba kuvvet araması kullanabilir; ancak bu algoritmanın tersine çevrilmesi değil, girdi uzayının kapsamlı biçimde taranmasıdır. Parolalar için herhangi bir hızlı hash fonksiyonu yerine bcrypt, scrypt veya Argon2 kullanın.
SHAttered saldırısı nasıl çalışır?
SHAttered saldırısı, SHA-1 sıkıştırma fonksiyonundaki yapısal zayıflıklardan yararlanır. Aynı ara hash durumunu üreten iki farklı 512 bitlik ileti bloğu dikkatlice oluşturarak saldırganlar, özdeş SHA-1 özetleri ama farklı görünür içerikler taşıyan iki PDF dosyası oluşturdu. Saldırı yaklaşık 2^63 SHA-1 hesabı gerektirdi — tek CPU süresiyle yaklaşık 6.500 yıl, ancak aylarca süren bir GPU kümesiyle gerçekleştirilebilir. Geliştirilen tekniklerle maliyet o zamandan bu yana daha da düştü.
SHA-1 ile HMAC-SHA1 arasındaki fark nedir?
SHA-1 düz bir hash fonksiyonudur: hash = SHA1(ileti). HMAC-SHA1 ise anahtarlı bir ileti kimlik doğrulama kodudur: mac = HMAC(anahtar, ileti). HMAC, hash fonksiyonunu uzunluk uzatma saldırılarını önleyen ve gizli bir anahtar gerektiren bir yapıya sarar. İlginç biçimde, SHA-1'in çakışma direnci açısından kırık olmasına karşın HMAC-SHA1, ileti kimlik doğrulaması için hâlâ güvenli kabul edilmektedir; çünkü HMAC güvenliği çakışma direncine değil, sıkıştırma fonksiyonunun sözde rastgele fonksiyon özelliklerine dayanır.
Dosya sağlama toplamları için SHA-1 mi yoksa MD5 mi kullanmalıyım?
SHA-1, dosya sağlama toplamları için MD5'ten daha iyi bir tercihtir. MD5, 128 bitlik özet üretir ve 2004'ten bu yana kırılmış olup pratik çakışma saldırıları artık saniyeler içinde gerçekleştirilebilmektedir. SHA-1, 160 bitlik özet üretir ve gösterilmiş olsalar da çakışma saldırıları daha pahalı kalmaya devam etmektedir. Bununla birlikte, herhangi bir yeni sistem için SHA-256'yı tercih edin — bilinen pratik saldırısı olmayan 256 bitlik özet sağlar ve tüm platform ve dillerde geniş destek görmektedir.