i (am) Blogger and U?

from X-periment to X-perience

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 [...]

Web Profil / Portofolio Basic 1

Web Profil/Portofolio Basic 1, aplikasi/software untuk mengelola portofolio (atau bisa juga dijadikan sebagai photo/image gallery) atau untuk menampilkan profil perusahaan maupun perseo [...]

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 [...]

Aplikasi Web: WebReview-Series 1

Web Review-Series 1 adalah paket aplikasi web yang memfasilitasi Anda yang ingin membuat situs yang berisi review dari berbagai hal. Review tentang suatu produk, Review tentang suatu te [...]

Profile / Portofolio Pro 2

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

Belajar Online: E-learning - Kuis & Soal

"Belajar Online: E-learning - Kuis & Soal", Software/aplikasi e-learning berbasis web yang dapat digunakan oleh pengajar/guru/pembimbing atau perorangan untuk membuat soal/kuis atau per [...]

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. <<