Hashing: Kenapa Password Nggak Boleh Disimpan Apa Adanya
Coba pikirin sebentar. Tiap kali kamu daftar di sebuah website, kamu masukin password. Password itu disimpan di database mereka. Nah, pertanyaan yang jarang dipikirin orang: password itu disimpan dalam bentuk apa? Kalau disimpan apa adanya, tulisan biasa, berarti siapa pun yang bisa buka database itu (termasuk hacker yang bobol, atau bahkan karyawan nakal) bisa baca password semua orang. Serem, kan? Di sinilah hashing jadi penyelamat.
Masalahnya: password polos itu bahaya
Bayangin sebuah website nyimpen password kamu gini di database: rahasia123. Jelas kelihatan, kebaca siapa aja. Kalau database itu bocor, dan database bocor itu kejadian yang sering banget, maka password semua pengguna ketahuan. Lebih parah lagi, banyak orang pakai password yang sama di mana-mana. Jadi password yang bocor dari satu website bisa dipakai buat bobol akun email, bank, medsos mereka. Satu kebocoran, efeknya ke mana-mana.
Jadi aturannya jelas: password nggak boleh pernah disimpan dalam bentuk aslinya. Titik.
Jadi, hashing itu apa?
Hashing itu proses ngubah password kamu jadi string acak yang panjang dan nggak ada artinya. Misal password rahasia123 setelah di-hash bisa jadi sesuatu kayak:
Yang disimpan di database itu string acak tadi, bukan password aslinya. Jadi kalaupun database bocor, yang kelihatan cuma barisan karakter ngawur yang nggak berguna buat hacker.
Tapi di sinilah bagian yang bikin hashing spesial, dan sering bikin pemula bingung.
Hashing itu satu arah, bukan "mengunci"
Ini perbedaan paling penting yang perlu kamu paham. Pas denger "mengubah jadi acak", banyak orang mikir kayak mengunci: dikunci, nanti bisa dibuka lagi pakai kunci. Hashing BUKAN gitu. Hashing itu satu arah. Sekali sebuah password di-hash, nggak ada cara buat ngebalikin string acak itu jadi password aslinya. Nggak bisa, bahkan sama yang bikin hash-nya sekalipun.
Analoginya kayak nge-blender buah. Apel kamu blender jadi jus, gampang. Tapi coba balikin jus jadi apel utuh lagi? Mustahil. Hashing begitu. Gampang maju, nggak bisa mundur.
Ini kedengerannya aneh. "Lah, kalau nggak bisa dibalikin, gimana cara website ngecek password aku bener pas aku login?" Pertanyaan bagus.

Hashing itu kayak nge-blender. Apel jadi jus gampang, tapi jus balik jadi apel? Nggak mungkin.
Terus gimana cara cek password pas login?
Triknya pinter. Pas kamu login dan masukin password, sistem nggak ngebalikin hash yang tersimpan. Yang dia lakuin, dia nge-hash password yang baru kamu ketik, lalu bandingin hasilnya sama hash yang udah tersimpan di database. Kalau dua hash itu sama persis, berarti password-nya bener.
Jadi sistem nggak pernah perlu tau password aslimu. Dia cuma butuh tau "apakah hash dari yang kamu ketik cocok sama hash yang kusimpan". Cerdas, dan aman.
Hashing di Laravel
Kabar baiknya, kamu nggak perlu bikin sistem hashing ini dari nol. Laravel udah nyiapin semua. Buat nge-hash password, kamu cukup pakai satu baris:
Hash::make buat ngubah password jadi hash (dipakai pas register), dan Hash::check buat bandingin (dipakai pas login). Di belakang layar, Laravel pakai metode hashing yang kuat namanya bcrypt, tapi kamu nggak perlu pusing soal itu. Cukup tau dua perintah ini.
Satu hal yang bikin hashing makin aman
Ada detail menarik: coba hash password yang sama dua kali, hasilnya bakal beda. Ini disengaja. Laravel nambahin sedikit "bumbu acak" (istilahnya salt) tiap kali nge-hash, jadi dua orang yang kebetulan pakai password sama pun hash-nya tetap beda di database. Ini bikin kerja hacker makin susah. Kamu nggak perlu ngatur ini manual, Laravel udah ngurusin otomatis. Tapi sekarang kamu tau kenapa hash yang sama bisa keliatan beda-beda.
Segitu dulu soal hashing. Inti yang perlu nempel: password nggak pernah disimpan apa adanya, selalu di-hash jadi string acak satu arah yang nggak bisa dibalikin. Bahkan kamu sebagai pemilik website pun nggak akan pernah tau password penggunamu, dan itu memang seharusnya begitu. Pas nanti kita bikin fitur register di seri lain, kamu bakal langsung praktek pakai Hash::make ini.
Baca juga
0 komentar
Jadilah yang pertama berkomentar.