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:
- Hampir tidak dimungkinkan untuk meghasilkan digest yang sama
- Tidak mungkin untuk mengekstrak isi file yang asli
- Perubahan sedikit akan membuat perbedaan yang sangat drastis
- 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.