i (am) Blogger and U?

from X-periment to X-perience

Profile / Portofolio Pro 1

Aplikasi Profil / Portofolio Pro 1, software berbasis web untuk pengelolaan portofolio atau untuk menampilkan profil baik perusahaan maupun perseorangan. Selain itu software ini dapat p [...]

Aplikasi Web: Forum Mirip Twitter

Aplikasi ini merupakan aplikasi layaknya forum pada umumnya. Hal spesial dari aplikasi ini adalah adanya tambahan yang mirip dengan Twitter. Fitur-fitur yang dimiliki antara lain: foll [...]

Aplikasi Web: WebReview-Series 2

Web Review-Series 2 memiliki fitur-fitur yang sama persis dengan Web Review-Series 1 tapi dengan theme/template yang berbeda (theme yang dipakai pada versi ini adalah theme yang respons [...]

One-Page Portofolio / Gallery 1

One-Page Portofolio/Gallery adalah paket aplikasi web yang memfasilitasi Anda baik perseorangan maupun korporat yang ingin menampilkan/memajang portofolio/hasil karya/gallery kegiatan/p [...]

One-Page Portofolio / Gallery 2

One-Page Portofolio / Gallery 2 memiliki fitur-fitur yang sama persis dengan One-Page Portofolio / Gallery 1 tapi dengan theme/template yang berbeda (theme yang dipakai pada versi ini a [...]

Template Toko Online: Shopper Variant

SHOPPER-Variant adalah HTML template (menggunakan Bootstrap 3.3.6) yang ditujukan untuk toko online. Template ini terdiri dari 6 halaman siap pakai yaitu home, product lists, shopping c [...]

Mengapa Password tidak Perlu Dienkripsi?

Category: Tanya JawabDate:
Saturday, 16 Mar 2019

pertanyaan
Ketika membuat aplikasi yang membutuhkan login, saya menjumpai bahwa mayoritas (atau bahkan mungkin semuanya) tidak mengenkripsi password tapi malah di-hash? Apakah password memang tidak perlu dienkripsi?

jawaban
Jawabannya, menurut saya tidak perlu dienkripsi karena "lebih berbahaya" terutama kalau fungsi untuk mengenkripsi adalah buatan sendiri. Ya, enkripsi memiliki suatu fungsi berlawanan yang namanya fungsi invers yang memungkinkan "sesuatu" yang dienkripsi bisa "dibaca".

Contoh sederhananya, misal kita punya fungsi untuk mengenkripsi teks namanya enk() dan teks yang dienkripsi adalah "abcd". Fungsi enk() dikenakan pada teks "abcd" hasilnya adalah "ghij" --> enk('abcd') = 'ghij'. Kemudian kita punya fungsi invers enk_inv() untuk mengembalikan ke teks aslinya. Fungsi enk_inv() dikenakan pada teks "ghij" hasilnya adalah "abcd" --> enk_inv('ghij') = 'abcd'.

Hash merupakan fungsi searah yakni fungsi yang tidak memiliki invers sehingga "sesuatu" yang di-hash "tidak bisa" dikembalikan ke aslinya. Lalu bagaimana cara untuk mengecek "sesuatu" yang sudah di-hash? Jawabannya adalah dengan membandingkan hasil hash karena tidak ada "sesuatu" yang di-hash yang memiliki hasil yang sama. Akan tetapi ada kasus yang namanya "collision" di mana ada dua "sesuatu" yang berbeda yang memiliki hasil hash yang sama (kasus ini pernah terjadi ketika menggunakan md5() jadi sebaiknya dihindari penggunaanya, silahkan baca tips membuat password untuk informasi terkait password). Jadi, satu-satunya cara meng-crack hash adalah dengan metode "brute-force" (mencoba semua kemungkinan atau membandingan satu demi satu).

Jadi, inilah alasan mengapa mayoritas aplikasi menyimpan password dalam bentuk hasil hash. Pembuat aplikasi tidak perlu mengetahui apa password-nya dan hanya perlu membandingan hasil hash yang disimpan dengan password yang dikirim oleh user ketika proses login (jadi yang tahu password-nya hanyalah user yang bersangkutan).




Bagi Anda yang punya pertanyaan seputar Pemrograman Web (php murni atau framework CodeIgniter, Laravel dan sejenisnya atau lainnya, MySQL, jQuery, GNU/Linux dll), silahkan kirimkan email dengan awalan subjek [Tanya-Jawab] ke alamat email iqbal[dot]chahyadi[at]gmail[dot]com

Insya Allah akan saya bantu sebisa mungkin dan pembahasannya akan ditampilkan dalam kategori posting Tanya Jawab (dan kepada pengirim juga akan saya kirimkan URL jawabannya atau jawabannya langsung).

No comments...
>> Comments closed. <<