Nasıl kullanılır
- Metin girin, girdi biçimini "Onaltılık" olarak değiştirin ya da "Dosya aç" ile bir dosya açın.
- SHA-1 önceden seçilidir; sonucu başka bir hash fonksiyonuyla karşılaştırmak isterseniz "Algoritma" listesini değiştirin.
- "Çıktı biçimi" listesinden "hex (küçük harf)" (sha1sum ve Git'in gösterdiği biçim), "HEX (büyük harf)" veya "Base64" seçin.
- Beklenen SHA-1 değerini "Karşılaştırılacak değer" alanına yapıştırın; sayfa "Eşleşiyor" veya "Eşleşmiyor" sonucunu gösterir.
SHA-1 nedir?
SHA-1 (Secure Hash Algorithm 1), NSA tarafından tasarlandı ve kısa ömürlü SHA-0'ın yerini almak üzere 1995'te NIST tarafından FIPS 180-1 olarak yayımlandı. Bugün FIPS 180-4'te tanımlanır; RFC 3174 ise algoritmayı örnek C koduyla açıklar. SHA-1, 512 bitlik blokları 80 turda işler ve 160 bitlik bir özet üretir: 40 hex karakteri veya 28 Base64 karakteri.
Her hash gibi SHA-1 de tek yönlüdür. Bir özetin şifresi çözülemez; yalnızca tahminler hash'lenerek eşleşme aranabilir. 2012'de LinkedIn'den sızdırılan tuzsuz SHA-1 parola hash'leri de bu yolla toplu olarak kırıldı. Parolalar Argon2, scrypt, bcrypt veya PBKDF2 ile saklanmalıdır.
SHAttered: SHA-1 neden kullanımdan kaldırıldı
Şubat 2017'de CWI Amsterdam ve Google'dan araştırmacılar, ilk gerçek SHA-1 çakışması olan SHAttered'ı yayımladı: yaklaşık 2^63 SHA-1 hesaplamasıyla bulunan ve aynı hash değerine sahip iki farklı PDF dosyası. 2020'de Gaëtan Leurent ve Thomas Peyrin ("SHA-1 is a Shambles"), seçilmiş önek çakışmasıyla PGP anahtarları üzerinde sahte SHA-1 imzaları oluşturulabildiğini gösterdi; üstelik bunun maliyeti, kaynakları bol bir saldırganın karşılayabileceği düzeydeydi.
- Genel sertifika yetkilileri (CA) 2016'da SHA-1 TLS sertifikası vermeyi bıraktı; tarayıcılar da 2017'nin başında bu sertifikalara güvenmeyi bıraktı.
- NIST, 2013'ten beri yeni dijital imzalarda SHA-1 kullanımına izin vermiyor ve onu 2030 sonuna kadar tamamen kullanımdan kaldırmayı planlıyor.
- Çoğu Git deposu nesneleri hâlâ SHA-1 ile tanımlar; bu değerler, çakışma girişimlerini tespit eden güçlendirilmiş bir uygulamayla hesaplanır. Git, SHA-256 kullanan depolar da oluşturabilir.
Çakışmalar HMAC'i kırmaz; bu nedenle HMAC-SHA1 hâlâ TOTP kodlarında ve eski webhook imzalarında karşımıza çıkar. Bu değeri HMAC Oluşturucu ile hesaplayabilirsiniz. Yeni projelerde ise SHA-256 tercih edin.
Git nesne kimlikleri, Base64 ve metin kodlaması
Bir Git blob kimliği yalnızca dosyanın SHA-1 değeri değildir. Git; blob, bir boşluk, bayt cinsinden boyut ve bir sıfır bayttan oluşan bir başlığı, ardından gelen içerikle birlikte hash'ler. Aynı değeri burada elde etmek için girdi biçimini "Onaltılık" yapın ve bu başlık baytlarını da ekleyin: hello ve bir satır sonu için onaltılık girdi 626c6f6220360068656c6c6f0a olur.
$ printf 'hello\n' | sha1sum
f572d396fae9206628714fb2ce00f72e94f2258f -
$ printf 'hello\n' | git hash-object --stdin
ce013625030ba8dba906f756967f9e9ca394464a
SHA-1 genellikle küçük harfli hex olarak gösterilir. Base64 biçimine WebSocket el sıkışmasında rastlanır: burada Sec-WebSocket-Accept, istemci anahtarına sabit bir GUID eklenerek elde edilen değerin Base64 olarak kodlanmış SHA-1 özetidir. LDAP {SHA} parola değerleri de bu biçimi kullanır. Hash'in baytları kapsadığını unutmayın: aksanlı harfler içeren bir metnin SHA-1 değeri UTF-8'de bir, Windows-1252'de başkadır.
Komut satırında ve kodda SHA-1
sha1sum file.zip # Linux
shasum file.zip # macOS (varsayılan SHA-1'dir)
certutil -hashfile file.zip SHA1 # Windows
Get-FileHash file.zip -Algorithm SHA1 # PowerShell
# Python
hashlib.sha1(data).hexdigest()
// Node.js
crypto.createHash('sha1').update(data).digest('hex')
Bu sayfa SHA-1'i tarayıcınızda yerleşik olan Web Crypto API ile hesaplar; bu nedenle girdi cihazınızdan hiçbir zaman çıkmaz. "Tüm algoritmalar" tablosu aynı girdinin MD5, SHA-256, SHA-384, SHA-512 ve CRC değerlerini gösterir.
Örnekler
| Girdi (UTF-8) | SHA-1 |
|---|---|
Hello, World! | 0a0a9f2a6772942557ab5355d76af442f8f65e01 |
Base64.is | 6c667ee2efd2020349eed40efa07c26683f613c8 |
你好 | 440ee0853ad1e99f962b63e459ef992d7c211722 |
Sıkça sorulan sorular
SHA-1 kullanmak hâlâ güvenli mi?
İmzalar ve sertifikalar gibi, bir saldırganın girdiyi seçebildiği veya etkileyebildiği yerlerde değil; çünkü SHA-1 çakışmaları üretilebilir. Kazara oluşan bozulmaları yine de tespit eder ve HMAC-SHA1 çakışmalardan etkilenmez. Yeni projelerde SHA-256 veya SHA-512 kullanın.
SHA-1 hash değeri tersine çevrilebilir mi?
Hayır. Ortada ne bir anahtar ne de bir şifre çözme işlemi vardır. Sorgulama siteleri yalnızca yaygın kelimelerden ve sızdırılmış parolalardan oluşan tablolarında zaten bulunan girdileri bulabilir. Uzun ve rastgele bir girdinin bu sitelere karşı güvende olup kısa bir parolanın güvende olmamasının nedeni budur.
SHA-1 hash değeri ne kadar uzundur?
= ile biten 28 Base64 karakteri. RIPEMD-160 de aynı uzunluktadır; MySQL 4.1+ parola hash'leri ise bir yıldız işareti ve ardından gelen 40 hex karakterinden oluşur. Hash Tanımlayıcı, verilen bir dize için olası algoritmaları listeler.Bir dosyayı yayımlanan SHA-1 değeriyle nasıl karşılaştırırım?
Dosyayı açın, ardından yayımlanan değeri "Karşılaştırılacak değer" alanına yapıştırın. Büyük veya küçük harfli hex ile Base64 değerlerinin tümü kabul edilir; sayfa "Eşleşiyor" veya "Eşleşmiyor" sonucunu gösterir.
SHA-1 ile SHA-256 arasındaki fark nedir?
Her ikisi de NIST tarafından yayımlandı; ancak SHA-256 daha yeni olan SHA-2 ailesine aittir, 256 bitlik bir çıktı üretir ve bilinen pratik bir saldırısı yoktur. SHA-1'in çıktısı daha kısadır ve çakışma direnci kırılmıştır.