Hash'lar, genellikle metin biçiminde değişken uzunluktaki bir veri dizesini alan ve daha kısa, sabit uzunluklu sayısal değerlere dönüştüren matematiksel formüllerdir. Aramaları daha hızlı ve daha verimli hale getirmek için, bilgisayar veritabanlarında karmalar sıkça kullanılır. Şifrelerin bozulmamasını sağlamak ve diğer kullanımların yanı sıra dijital imzaları doğrulamak için şifrelemede de kullanılırlar. Hash'lar ayrıca karma fonksiyonların ismine göre gider ve algoritmalar olarak da kabul edilebilir.
Karma aramalar, veritabanı aramalarını kolaylaştırmada büyük rol oynar. İsimlerden oluşan bir veritabanında, örneğin bir kullanıcı “John Doe” kelimesini ararsa, bilgisayar aramadaki tüm karakterleri her veritabanı girişindeki karakterlerle eşleştirmek zorunda kalır. Addaki her karakterin 26 farklı olasılığı olacak - İngiliz alfabesinin harfleri - girişlerin değişken uzunluğu da aramayı yavaşlatacaktır.
Buna karşılık, bir karma işlevi uygulamak, bilgisayarın ömrünü çok daha kolaylaştıracaktır. Her metin dizisini bir sayı dizisine çevirmek aramayı kolaylaştırır, çünkü bilgisayarın her karakteri kontrol etmek için yalnızca on olasılığı vardır: “0” - “9” arasındaki rakamlar Sayı serisinin sabit uzunluğu aynı zamanda bilgisayarın da iş daha verimli.
Karma işlevi uygulanmış bir veritabanında, tüm girişlerin karşılık gelen benzersiz bir numarası vardır. Buna hash anahtarı denir. Bu durumda, bir arama yaptığınızda, bilgisayar önce "John Doe" gibi girdiğiniz girdilere hash işlevini uygular. Bu, örneğin "456789" gibi sayısal bir değere yol açar. bu sonucu, doğru girişe karşılık gelen karma anahtarla eşleştirin.
Hash'ler ayrıca dijital imzalar olarak da işlev görür. Örneğin, bir gönderen Robert, bir kişiye belge göndermek ister ve alıcı Mary, belgenin yoldayken tahrif edilmediğinden emin olmak ister. Gönderen Robert, belgeyi yalnızca sayısal bir değerle sonuçlanan bir karma işleviyle çalıştırır. Robert daha sonra karma anahtarı şifreler ve belgeyi şifreli anahtarla birlikte gönderir.
Mary her iki öğeyi de alır ve karma anahtarının şifresini çözer. Artık belgeden gönderilmeden önce ortaya çıkan sayısal değeri görebilir. Elindeki belgenin tam olarak aynı olduğunu doğrulamak için belgeyi bilgisayarındaki bir karma işleviyle çalıştırır. Son olarak, her iki anahtarı da karşılaştırır. Eğer aynılarsa, belge alıcıya giderken değiştirilmedi.
Her biri kendi matematik formülü olan birçok farklı karma işlevi vardır. Bir karma işlevinin çalışması için, iki veritabanı girişi aynı karma anahtarda olduğunda meydana gelen herhangi bir çarpışmayı en aza indirmelidir. Hash işlevleri de tek yönlü olmalıdır. Bu, bir veritabanı girişinden veya belgesinden bir anahtar üretebileceğiniz anlamına gelir, ancak tersi değil. Başka bir deyişle, orijinal belgeyi karma anahtarından “tersine mühendislik” yapamazsınız.


