Çok karıştırılan 2 tür algoritma çeşiti vardır: encryption (şifreleme) ve hashing. MD5, SHA256 gibi algoritmalar hashing algoritmalarıdır.
Hashing algoritmalarında girdiğiniz verinin büyüklüğü ne olursa olsun size belli bir karakter döndürür. Örneğin "araba" kelimesinin MD5 hashının uzunluğu 32 karakter iken, 3 GB'lık bir videonun MD5 hashı da 32 karakterdir.
Mantık olarak düşündüğünüzde zaten 32 karakteri kullanarak 3 GB'lık dosya üretmek mümkün değil.
Encryption yani şifreleme algoritmalarında ise durum farklıdır. Girilen veri belli bir anahtar ile (bazı durumlarda anahtar kullanılmaz) şifrelenir ve gerektiği zaman decrypt edilerek kullanılır.
PEKİ BU DURUMDA HASHING ALGORİTMALARI NE İŞE YARIYOR?
Siz bir web sitesine kayıt oluyorsunuz diyelim. Veri tabanındaki password sütununa parolanız direkt olarak kaydedilmez, çoğu zaman MD5 şeklinde kaydedilir. Daha sonra siz o siteye giriş yapmak istediğinizde şu kontrol yapılır:
Eğer kullanıcının girdiği parolanın md5 hashı veritabanında bulunan hash'a eşit ise giriş başarılı, değilse başarısız.