Hashing adalah transformasi string karakter menjadi nilai panjang tetap yang lebih pendek atau kunci yang mewakili string asli. Hashing digunakan untuk mengindeks dan mengambil item dalam database karena lebih cepat menemukan item menggunakan kunci hash yang lebih pendek daripada menemukannya menggunakan nilai asli. Itu juga digunakan dalam banyak algoritma enkripsi.

Algoritma hashing disebut fungsi hash – mungkin istilah tersebut berasal dari gagasan bahwa nilai hash yang dihasilkan dapat dianggap sebagai versi “campur aduk” dari nilai yang diwakili.

Selain pengambilan data yang lebih cepat, hashing juga digunakan untuk mengenkripsi dan mendekripsi tanda tangan digital (digunakan untuk mengotentikasi pengirim dan penerima pesan). Tanda tangan digital diubah dengan fungsi hash dan kemudian nilai hash (dikenal sebagai message-digest) dan tanda tangan dikirim dalam transmisi terpisah ke penerima. Menggunakan fungsi hash yang sama dengan pengirim, penerima memperoleh intisari pesan (message-digest) dari tanda tangan dan membandingkannya dengan intisari pesan yang diterima juga. (Mereka harus sama.)

Fungsi hash digunakan untuk mengindeks nilai atau kunci asli dan kemudian digunakan nanti setiap kali data yang terkait dengan nilai atau kunci tersebut akan diambil. Jadi, hashing selalu merupakan operasi satu arah. Tidak perlu “reverse engineer” fungsi hash dengan menganalisis nilai hash.

Bahkan, fungsi hash yang ideal tidak dapat diturunkan dengan analisis tersebut. Fungsi hash yang baik juga seharusnya tidak menghasilkan nilai hash yang sama dari dua input yang berbeda. Jika ya, ini dikenal sebagai collision atau tabrakan. Fungsi hash yang menawarkan risiko tabrakan yang sangat rendah dianggap dapat diterima.

Berikut adalah beberapa fungsi hash yang relatif sederhana yang telah digunakan:

  • Metode pembagian-sisa : Ukuran jumlah item dalam tabel diperkirakan. Angka itu kemudian digunakan sebagai pembagi ke dalam setiap nilai atau kunci asli untuk mengekstrak hasil bagi dan sisa. Sisanya adalah nilai hash. (Karena metode ini bertanggung jawab untuk menghasilkan sejumlah tabrakan, mekanisme pencarian apa pun harus dapat mengenali tabrakan dan menawarkan mekanisme pencarian alternatif.)
  • Metode lipat : Metode ini membagi nilai asli (dalam kasus ini digit) menjadi beberapa bagian, menambahkan bagian-bagian bersama-sama, dan kemudian menggunakan empat digit terakhir (atau beberapa digit angka acak lainnya yang akan berfungsi) sebagai nilai hash atau kunci.
  • Metode transformasi radix: Jika nilai atau kunci digital, basis angka (atau radix) dapat diubah menghasilkan urutan digit yang berbeda. (Misalnya, kunci angka desimal dapat diubah menjadi kunci angka heksadesimal.) Angka urutan tinggi dapat dibuang agar sesuai dengan nilai hash dari panjang seragam.
  • Metode penataan ulang digit: Ini hanya mengambil bagian dari nilai asli atau kunci seperti digit di posisi 3 hingga 6, membalikkan urutannya, dan kemudian menggunakan urutan digit itu sebagai nilai atau kunci hash.

Ada beberapa fungsi hash terkenal yang digunakan dalam kriptografi. Ini termasuk fungsi hash pesan-digest MD2MD4, dan MD5, digunakan untuk hashing tanda tangan digital menjadi nilai yang lebih pendek yang disebut message-digest, dan Secure Hash Algorithm (SHA), algoritma standar, yang membuat lebih besar (60- bit) message digest dan mirip dengan MD4.

Namun, fungsi hash yang berfungsi dengan baik untuk penyimpanan dan pengambilan basis data, mungkin tidak berfungsi untuk keperluan kriptografis atau pemeriksaan kesalahan.

Tagged: