MD5 araçları onaltılık değerler çıkarır. Aynı şekilde, SHA ve RSA birlikte onaltılı (veya başka bir) çıktı üretir mi?
MD5, SHA ve RSA algoritmaları arasındaki farklar nelerdir?
Çıktı türü değil. Hex, verilerin biçimlendirilme şeklidir - hepsi ikili veriler üzerinde çalıştığı için hex çok mantıklıdır.
Önemli olan, yaptıkları ve nasıl yaptıklarıdır:
MD5 ve SHA karma işlevlerdir (SHA aslında karma işlevler ailesidir) - bir parça veri alırlar, sıkıştırırlar ve farklı bir şekilde taklit edilmesi çok uygun olan benzersiz bir çıktı oluştururlar. Hiçbir şey şifrelemezler - başlangıç noktanıza geri dönmek için MD5 veya SHA çıktı alınamaz ve “unhash” alamazsınız. karma oluşturmak için kullandıkları algoritma Ayrıca MD5 artık kolayca çarpışmalar oluşturmak için bir yol keşfedildi ve artık kullanılmamalıdır ne de güvenilir gerektiğini unutmayın.
RSA bir asimetrik şifreleme algoritmasıdır. İki anahtarınız (özel ve genel) vardır ve bir anahtarla (şifreleme veya şifresini çözme) bir işlevi gerçekleştirebilir ve diğer anahtarla geri alabilirsiniz. Hangi anahtarı kullandığınız, dijital imza veya şifreleme yapmaya çalışmanıza bağlıdır.
MD5 bir şifreleme karma işlevi. "SHA", karma işlevler ailesinin adıdır; önce "SHA-0" olarak adlandırılan kısa ömürlü bir "SHA", daha sonra "SHA-1" tanımlandı (en çok satanlar). Daha sonra, topluca "SHA-2" olarak adlandırılan ve SHA-224, SHA-256, SHA-384 ve SHA-512'den oluşan ailenin yeni üyeleri eklendi. Son zamanlarda, yeni bir SHA nesil, "SHA-3" ve aynı zamanda "Keccak" olarak tasarlandı (bu açık bir yarışmadı, Keccak sonunda kazanan adaylardan birinin kod adı idi) .
Şifreleme karma işlevi, gizli anahtar kullanmayan, tamamen tanımlanmış, deterministik bir işlevdir. Girdi olarak keyfi uzunlukta bir mesaj alır (bir bit akışı, herhangi bir bit) ve sabit boyutlu bir çıktı üretir. Çıktı boyutu işleve bağlıdır; MD5 için 128 bit, SHA-1 için 160 bit, SHA-256 için 256 bittir ... Herkes belirli bir girişte belirli bir karma işlevini hesaplayabilir ve hepsi aynı sonuçları alır. Karma işlevleri özet olarak da adlandırılır, çünkü bir şekilde girdinin bir tür "sağlama toplamı" veya "özeti" üretir. Sağlam hash fonksiyonları, hiç kimse onları nasıl tersine çevireceğini bilmeyecek ve hatta aynı çıktıyı veren iki ayrı girdi bulamayacak şekilde olmalıdır. İkincisine çarpışma denir ve çarpışmaların var olması matematiksel bir zorunluluktur (çünkü fonksiyon farklı çıktılar üretebileceğinden çok daha farklı girdileri kabul edebileceğinden), ancak bir çarpışma bulmak bile mümkün değildir.
MD5'in çarpışmalar açısından çok kırıldığı ortaya çıktı (bir PC üzerinde birkaç saniyelik bir işte çarpışma üretebiliriz) ve SHA-0 da bu açıdan kırıldı; SHA-1 biraz lapa lapa; SHA ailesinin geri kalanı şimdiye kadar sağlam görünüyor. Bir karma işlevinin çarpışma direncine nasıl ulaştığı, tüm işlev tamamen gizli bir değere sahip olmadığı için biraz mucizedir; en iyi kriptografların süreci çözmesi için verileri çok fazla karıştırır.
RSA iki algoritmadır: bir asimetrik şifreleme algoritması ve bir dijital imza algoritması . Her iki algoritma da aynı tür matematik üzerine inşa edilmiş olsa da, oldukça farklıdırlar (birçok insan imzaları "özel anahtarla şifreleme" olarak tanımlamaktadır, bu da bir kusur benzetmesi ve en iyi kafa karıştırıcıdır, bunu yapmayın). Her iki algoritma da tuşlarını , yani gizli tutulması gereken veri parçalarını kullanır. RSA imzaları için, imzalanan şey doğrudan verilen bir mesaj (bit dizisi) değil, mesajın bir karması olur: mesaj ilk önce bir şifreleme ile işlenir SHA-256 gibi hash işlevini kullanır ve daha sonra hash değeri kullanılır. Bu şekilde yapılır, çünkü RSA'nın matematiği en iyi ihtimalle sadece orta büyüklükteki değerleri, birkaç yüz biti işleyebilir. Şifreleme karma işlevleri, karmayı imzalamak, orijinal verileri imzalamak kadar iyidir.
Bu şekilde, RSA ve kriptografik hash fonksiyonları sıklıkla birlikte kullanılır; ama aynı şey değiller.
Onaltılık , karakterlik bir diziye bir bit dizisini temsil etmenin bir yoludur : onaltılık basamak kullanır ve 'A' ile 'F' arasındaki harfler; her karakter tam olarak dört bit kodlar ('0' '0000' kodlar, '7' '0111' kodlar, 'D' '1101' kodlar ...). Herhangi bir bit dizisi (ve özellikle bir hash fonksiyonunun çıkışı) onaltılık ve arkaya dönüştürülebilir. Onaltılık popülerdir çünkü insan gözleri ve beyni karakter okumada iyidir, bit okumada iyi değildir. Dosyalardaki kriptografik karma işlevlerini hesaplayan komut satırı araçları, geleneksel olarak bu nedenle onaltılık karakterler çıkarır. Bununla birlikte, hash fonksiyonlarını onaltılı olarak bağlayan hiçbir şey yoktur: bir bilgisayara bir şekilde uyan her şey bir bit dizisidir ve bu nedenle onaltılıya uygundur; ve karma fonksiyon çıktısı sadece çeşitli şekillerde kodlanabilen bir bit dizisidir, onaltılık sadece "geleneksel" yoldur ( Base64 ile de özellikle veritabanlarıyla uğraşırken de sıklıkla karşılaşılır).