i (am) Blogger and U?

from X-periment to X-perience

Online Shop Basic 1

Online Shop Basic 1 adalah paket minimalis aplikasi toko online instan yang dapat digunakan untuk menjalankan bisnis secara online. Aplikasi ini adalah aplikasi toko online yang "sudah [...]

Aplikasi Web: Online Shop PRO 2

Toko Online Pro 2 memiliki fitur-fitur yang sama persis dengan Toko Online Pro 1 tapi dengan theme/template yang berbeda.

Template: ANIME-MAX

ANIME-MAX adalah HTML template (menggunakan Bootstrap 3.3.6) yang ditujukan untuk situs yang menyediakan link download atau nonton online video dalam kasus ini contohnya adalah anime ta [...]

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

One-Page Portofolio / Gallery 3

One-Page Portofolio / Gallery 3 memiliki fitur-fitur yang sama persis dengan One-Page Portofolio / Gallery 1 tapi dengan theme/template yang berbeda.

Starter: Anime/Movie Sharing

Produk yang satu ini adalah aplikasi web yang dikhususkan bagi Anda yang ingin memiliki situs/web yang dengan fasilitas untuk menampilkan anime/movie dan dapat ditonton oleh para pengun [...]

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