Apa Itu Hashing

- hashing cryptography

Hashing adalah rumus matematika yang mengubah data of arbitrary lenght menjadi smaller “fingerprint”. Fingerprint dalam dunia hashing sering disebut digest.

Hashing sendiri termasuk dalam salah satu komponen Cryptography, yaitu Integrity.

Sebuah algoritma hashing harus memenuhi 4 kriteria, yaitu:

  1. Hampir tidak dimungkinkan untuk meghasilkan digest yang sama
  2. Tidak mungkin untuk mengekstrak isi file yang asli
  3. Perubahan sedikit akan membuat perbedaan yang sangat drastis
  4. Digest yang dihasilkan panjangnya sama

Let’s get practical!

Saya punya 2 file, hello.txt punya 1 kata dan mobydick.txt punya 115.314 kata didalamnya.

[root@free-tier hash]# wc hello.txt mobydick.txt 
     1      1      6 hello.txt
 15603 115314 643210 mobydick.txt

Jika kita hash kedua file tersebut dengan md5sum maka akan di dapatkan digest dengan panjang yang sama. Point 4 checked.

[root@free-tier hash]# md5sum hello.txt mobydick.txt 
09f7e02f1290be211da707a266f153b3  hello.txt
08637b28b042bf5861bb933108063cf3  mobydick.txt

Jika Anda disuruh membuat file untuk menghasilkan digest yang sama dengan output diatas, bisa saja bisa ya, tapi akan sangat sulit pastinya. Point 1 checked.

Kemudian, jika Anda diberikan digest 08637b28b042bf5861bb933108063cf3 dan mencoba untuk mengesktrak digest tersebut menjadi file aslinya yang memiliki 115.314 kata, akan sangat sulit atau mustahil pastinya. Point 2 checked.

Untuk point 3 bisa kita coba dengan mengcopy mobydick.txt menjadi mobydick2.txt. Tambah 1 spasi pada file mobydick2.txt, hasilnya hashnya akan berbeda dengan file yang aslinya.

[root@free-tier hash]# cp mobydick.txt mobydick2.txt
[root@free-tier hash]# md5sum moby*
08637b28b042bf5861bb933108063cf3  mobydick2.txt
08637b28b042bf5861bb933108063cf3  mobydick.txt
[root@free-tier hash]# nano mobydick2.txt
[root@free-tier hash]# md5sum moby*
cdf549e3b8bf5b8f74933b7526298b40  mobydick2.txt
08637b28b042bf5861bb933108063cf3  mobydick.txt

Point 3 checked.