Özet satırları “ALGORİTMA karma” biçimini kullanır, böylece onları sürüm notlarına ya da indirme manifestolarına kopyalayabilirsiniz.
Karma Üreteci — her algoritma sıfırdan açıklanmış
Tek cümlede: kriptografik bir karma işlevi tek yönlü bir blenderdır — herhangi bir sayıda baytı alır ve sabit uzunlukta bir parmak izine sıkıştırır; öyle ki aynı girdi her zaman aynı parmak izini verir, ama parmak izi girdinin nasıl yeniden kurulacağı hakkında hiçbir şey söylemez. Bu sayfa bunlardan on birini tamamen tarayıcı sekmenizin içinde çalıştırır.
Aşağıdaki her algoritma aynı dört adımla açıklanır: sade sözcüklerle ne olduğu, formül kullanmadan nasıl çalıştığına dair sezgi, bugün hâlâ kullanılıp kullanılmayacağı ve insanların onunla en sık yaptığı hatalar.
MD5
Nedir. MD5 (1992), herhangi bir girdiyi 128 bitlik (32 onaltılık karakter) bir parmak izine sıkıştırır. 1990'ların bilgisayarlarında hızlı olacak şekilde tasarlandı ve öyledir — tam da bu yüzden hâlâ her yerdedir: yazılım indirme sayfaları, dosya tekilleştirme önbellekleri, eski veritabanı anahtarları.
Sezgisel olarak nasıl çalışır. Girdi 64 baytlık parçalara bölünür. Her parça 128 bitlik kayan bir duruma dört kez karıştırılır (dört biraz farklı karıştırma turu) ve son parçadan sonra durum özet olarak yazdırılır. Karıştırma toplamalardan, döndürmelerden ve tablo aramalarından oluşur — o zaman da ucuzdu, şimdi de.
Kullanmalı mısınız? Kimsenin sizi kandırmaya çalışmadığı sağlama toplamları için — bozuk bir indirmeyi ya da yinelenen dosyaları bulmak — evet; bozulmayı hâlâ mükemmel biçimde bildirir. Düşmanca her şey için hayır: 2004'ten beri araştırmacılar aynı MD5'e sahip iki farklı dosyayı saniyeler içinde üretebilir ve MD5 çakışmalarını kullanan gerçek sertifika sahteciliği 2008'de yaşandı. Onu bir kilit değil, bir seri numarası gibi düşünün.
Sık yapılan hatalar. Parolalar için MD5 kullanmak (çok hızlı — orada ne olması gerektiği için Parola Karma Üretecine bakın); “MD5 eşleşiyor” diye bir dosyaya güvenmek, oysa saldırgan MD5'i de yayımlamışsa; ve sadece karmayı değil tüm MD5 (dosya) = karma satırını yapıştırmak — yukarıdaki Doğrula kutusu ikisini de kabul eder.
SHA-1
Nedir. SHA-1 (1995, NSA) 160 bitlik (40 onaltılık karakter) bir özet üretir. Yirmi yıl boyunca Git, TLS sertifikaları ve PGP imzalarının varsayılan bütünlük karmasıydı.
Sezgisel olarak nasıl çalışır. MD5 ile aynı aile tarifi, ama 160 bitlik bir durum, 64 baytlık parça başına 80 karıştırma turu ve daha geniş bir işlem kümesiyle. Ekstra turlar, karıştırıcının tersine mühendisliğini zorlaştırmak içindi.
Kullanmalı mısınız? Düşmanca her şey için hayır. Teorik kırılma 2017'de pratik hale geldi: Google, özdeş SHA-1 değerlerine sahip iki farklı PDF üretti (SHAttered saldırısı, yaklaşık 6500 CPU yılı). Git, nesneleri hâlâ SHA-1 altında saklar ama onu yalnızca bir tanımlayıcı olarak ele alır ve o zamandan beri çakışma algılaması eklemiştir. Yeni işler için SHA-256 ya da SHA-3 kullanın.
Sık yapılan hatalar. 160 bitin “hâlâ yeterince uzun olduğuna” inanmak — kırılma iç yapıyla ilgilidir, kaba kuvvetle değil; ve RIPEMD-160'ı SHA-1 ile karıştırmak, çünkü ikisi de 40 onaltılık karakterdir (yukarıdaki tanımlayıcı kutusu bunları ayırt eder).
SHA-2: SHA-256, SHA-384 ve SHA-512
Nedir. SHA-2 ailesi (2001, NSA), modern bütünlük denetiminin iş atıdır. SHA-256 256 bit (64 onaltılık karakter) verir, SHA-512 512 bit verir ve SHA-384, sonucu 384 bite kesilmiş SHA-512'dir — bir protokol daha kısa bir etiket zorunlu kıldığında kullanışlıdır.
Sezgisel olarak nasıl çalışır. 64 baytlık parçalar (512 bitlik varyantlar için 128 bayt), 64 (ya da 80) tur toplama-döndürme-karıştırma adımından geçerek 8 kelimelik bir duruma katlanır. MD5'ten farklı olarak program önce her parçayı genişletilmiş bir tampona gerdirir; MD5'i ve SHA-1'i kıran saldırı türünü engelleyen de budur. Bilmeye değer bir merak: 64 bitlik CPU'larda SHA-512, SHA-256'dan daha hızlıdır, çünkü 64 bitlik aritmetikle tur başına iki kat veri işler.
Kullanmalı mısınız? Evet — SHA-256, bugün dosya sağlama toplamları, kod imzalama ve sertifika parmak izleri için varsayılan cevaptır; yirmi yıllık analizden sonra bilinen pratik bir kırılma yoktur. Daha fazla pay istediğinizde ya da platform onları daha hızlı çalıştırdığında SHA-384/512 kullanın.
Sık yapılan hatalar. Parolalar için yalnızca SHA-256 kullanmak — bu hızlı bir karmadır ve orada hız düşmandır (bcrypt/scrypt/Argon2id kullanın); ve düşmanca çakışma direnci ayarlarında özet uzunluğunu güçle karıştırmak — uzunluk yalnızca tavanı belirler.
SHA-3 (SHA3-256 / SHA3-512) ve Keccak-256
Nedir. SHA-3 (2015, Bertoni, Daemen, Peeters ve Van Assche'nin Keccak önerisinden standartlaştırılmıştır) üçüncü NIST karma standardıdır. SHA-2 iç yapısıyla hiçbir ortak noktası yoktur — SHA-2 bir gün düşerse bağımsız bir yedek olması için tam da bu nedenle seçilmiştir.
Sezgisel olarak nasıl çalışır. Keccak, parçaları küçük bir durumdan geçirmek yerine tekrar tekrar “emer ve sıkar”: girdi bit bit 5×5×64 bitlik bir süngerin içine emilir, tüm sünger sabit bir permütasyonla karıştırılır (tüm durum üzerinde bit düzeyinde işlemlerden oluşan 24 tur) ve özet bitleri sıkılarak çıkarılır. Sünger resmi tüm fikirdir: kapasite bitleri asla çıktı olarak verilmez ve işlevi tek yönlü yapan da onlardır.
Keccak-256 ile SHA3-256. Tam olarak bir dolgulama baytında farklılaşırlar. Keccak ekibinin özgün önerisi son bloğu 0x01 ile dolguluyordu; NIST standart dolgulamayı 0x06'ya değiştirdi (SHA-2 çağı Keccak'ın kullandığı alan ayrımı). Ethereum özgün dolgulamayı benimsedi, bu yüzden “keccak256”sı her girdi için standart SHA3-256'dan farklıdır. Bu sayfa ikisini de sunar, ayrı ayrı işaretlenir.
Kullanmalı mısınız? Evet — politika SHA-2 olmayan bir algoritma istediğinde birincil seçim olarak, ya da ekosistem zaten onu konuştuğunda. Sık yapılan hatalar: SHA3-256 ve Keccak-256'nın birbirinin yerine geçtiğini varsaymak (geçmezler — aynı girdi için bu sayfanın ürettiği iki satırı karşılaştırın); ve “SHA-3”ün SHA-2'nin yerini aldığını varsaymak — ikisi de güvenlidir, SHA-2 daha yaygın dağıtılmış olanıdır.
RIPEMD-160
Nedir. RIPEMD-160 (1996, Avrupalı akademisyenlerden oluşan RIPE konsorsiyumu; Dobbertin, Bosselaers ve Preneel tarafından güçlendirildi) 160 bit üretir. Tamamen Avrupa tasarımıdır ve NSA tasarımı SHA ailesinden kasten bağımsızdır.
Sezgisel olarak nasıl çalışır. Her 64 baytlık parça, farklı sabitler ve döndürme miktarlarıyla 80 turdan oluşan iki paralel hat tarafından işlenir; sonunda iki hat ve eski durum birleştirilir. İki izli yapı, tasarımcıların 1990'ların diğer karmalarını kıran diferansiyel saldırılara karşı direnme yoluydu.
Kullanmalı mısınız? Pratikte esas olarak başka sistemlerin içinde yaşar: Bitcoin adresleri genel anahtarlarını RIPEMD-160(SHA-256(pk)) ile karmalar, eski OpenPGP anahtarları onu bir karma seçeneği olarak sunar ve BitTorrent v1 parçaları için SHA-1 ile birlikte geleneksel karmadır. Pratik bir çakışma saldırısı yoktur, ama 160 bitlik boyutu bu sayfadaki en küçük güvenlik payını verir. Yeni bağımsız kullanımlar için SHA-256 ya da SHA-3'ü tercih edin.
Sık yapılan hatalar. İki paralel hattın onu “iki kat güçlü” yaptığına inanmak — çakışma direncini sınırlayan çıktı boyutudur; ve onu SHA-1 ile karıştırmak (aynı 40 onaltılık karakter uzunluğu; yukarıdaki tanımlayıcı kutusu her iki olasılığı yan yana listeler).
BLAKE2b-512 ve BLAKE2s-256
Nedir. BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn ve Winnerlein), yazılım hızı için tasarlanmış bir karmadır: BLAKE2b 64 bitlik platformları hedefler ve 512 bite kadar çıktı üretir, BLAKE2s 32 bitlik platformları hedefler ve 256 bite kadar çıktı üretir.
Sezgisel olarak nasıl çalışır. SHA-3 finalisti BLAKE'ten türemiştir; çekirdeği, ChaCha akış şifresinden ödünç alınmış anahtarlı bir permütasyondur: 4×4'lük bir kelime matrisi, sütun ve köşegen karıştırma adımlarının sırayla uygulanmasıyla karıştırılır — önce yukarıdan aşağıya, sonra köşegenler boyunca bir ızgarayı karıştırmak gibi — parça başına 12 (BLAKE2b) ya da 10 (BLAKE2s) tur. Bu adımlar CPU komutlarına güzelce oturduğu için BLAKE2, SHA-3'e yakın güvenlik sunarken çoğu zaman MD5'ten daha hızlıdır.
Kullanmalı mısınız? Evet — tamamen modern, kırılmamış bir tasarımdır; performansa duyarlı yazılımlarda (bazı ekosistemlerde paket bütünlüğü, içerik adresli depolama, yedek tekilleştirme) ve hızlı bir MAC olarak yaygındır. Bu sayfada BLAKE2b-512 en uzun özetleri, BLAKE2s-256 ise kompakt modern seçeneği verir.
Sık yapılan hatalar. “Daha hızlı olan zayıf olmalı” düşüncesi — BLAKE2 köşe kesilerek değil, tasarımıyla hızlıdır; ayrıca BLAKE2'nin bir anahtar (bunu bir MAC yapar) ya da kişiselleştirme dizgisi de kabul ettiğini fark etmemek — bu sayfa her zaman onu anahtarsız, düz kipte kullanır.
Doğrula ve Tanımla kutularını okumak
Doğrula. Doğrula kutusu yapıştırdığınız her şeyi normalleştirir — büyük ya da küçük harf, her iki karakterde bir iki nokta üst üste, bir sha256= öneki, BSD tarzı SHA256 (dosya) = karma sarmalayıcısı, karmadan sonra dosya adı içeren bir GNU md5sum satırı, başıboş \r\n — ardından güncel girdiniz (metin ya da seçilen dosya) üzerinde işaretlenen her algoritmayı yeniden hesaplar ve eşleşen her algoritmayı bildirir. Yeşil bir eşleşme “bu baytlar yayıncının karmaladığı şeyin tam kendisi” demektir; kırmızı ise işaretli hiçbir algoritmanın bunu üretmediği anlamına gelir — daha fazla algoritma işaretlemeyi deneyin ya da yapıştırmanın kesilip kesilmediğini denetleyin.
Tanımla. Tanımlayıcı kutusu hiçbir şeyi karmalamaz; dizgenin şeklini okur. Uzunluk adayları daraltır: 32 onaltılık karakter MD5 olabilir, 40 SHA-1 ya da RIPEMD-160 olabilir, 64 SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256 olabilir, 96 SHA-384, 128 SHA-512 / SHA3-512 / BLAKE2b-512. Önekler parola karmalarını açığa çıkarır ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — bunlar başka bir türdür (bkz. Parola Karma Üreteci) ve bu sayfa bilerek bunları hesaplamaz. +, / ve = içeren, uzunluğu 4'ün katı olan bir dizgi, bir onaltılık özetten çok Base64 kodlanmış veriye benzer; araç bunu çözer ve karşılık gelen bayt uzunluğunu bildirir.
Tanımlamanın neyi söyleyip neyi söyleyemediği. Uzunluk ve karakter kümesi biçimin parmak izleridir, algoritmanın kanıtı değil: iki 64 onaltılık karakterlik dizgi SHA-256'dan ya da kesilmiş SHA-512'den gelmiş olabilir. Tanımlayıcı olasılıkları sıralar; baytlarınızın gerçekte hangi algoritmayla eşleştiğini kanıtlayan Doğrula kutusudur.
On birinin tek bakışta özeti
| Algoritma |
Kesin |
Uydurma |
“The quick brown fox jumps over the lazy dog” cümlesinin özeti |
| MD5 | 128 bit | 1992 | 9e107d9d372bb6826bd81d3542a419d6 |
| SHA-1 | 160 bit | 1995 | 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 |
| SHA-256 | 256 bit | 2001 | d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 |
| SHA-384 | 384 bit | 2001 | ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1 |
| SHA-512 | 512 bit | 2001 | 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6 |
| SHA3-256 | 256 bit | 2015 | 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04 |
| SHA3-512 | 512 bit | 2015 | 01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450 |
| Keccak-256 | 256 bit | 2015 öncesi | 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15 |
| RIPEMD-160 | 160 bit | 1996 | 37f332f68db77bd9d7edd4969571ad671cf9dd3b |
| BLAKE2b-512 | 512 bit | 2013 | a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918 |
| BLAKE2s-256 | 256 bit | 2013 | 606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812 |
Yukarıdaki tablodaki her özet, bu sayfanın kendi motorları tarafından üretilir. Tüm algoritmaları işaretleyin, Örnek'e tıklayın ve karşılaştırın. SHA-3, Keccak, RIPEMD-160 ve BLAKE2 satırları, bu sitedeki kripto araçlarının genelinde kullanılan kendi barındırdığımız crypto-shared.js çekirdeğinden gelir.
SSS
Bir indirme için hangi kutuya güvenmeliyim? SHA-256 işaretliyken Doğrula kutusuna — bugün çoğu yayıncı SHA-256 ya da SHA-512 ile imzalar. Tanımla kutusu yalnızca adayları adlandırır; dosyanız hakkında asla bir şey kanıtlamaz.
Keccak-256 neden listede? Çünkü Ethereum, Swarm ve birkaç defter sistemi, standart öncesi dolgulamayı benimsedi. Bir Ethereum keccak256'yı doğruluyorsanız SHA3-256 değil, o satırı kullanmalısınız.
İki farklı girdi aynı özeti paylaşabilir mi? Teorik olarak evet — sonsuz sayıda girdi sonlu bir özet kümesine eşlenir (güvercin yuvası ilkesi). Pratikte, evrenin ısı ölümünden önce böyle bir çift bulmak “çakışma direnci”nin konusudur ve yukarıdaki MD5 ile SHA-1 dışındaki her algoritma hâlâ ayaktadır.
Karmalar şifreleme midir? Hayır. Şifreleme bir anahtarla geri çevrilebilir; karma ise tek yönlü bir blenderdır. Bu sayfadaki hiçbir şey metninize geri “şifresi çözülemez” — bu bir kısıtlama değil, bir özelliktir.