Mengamankan Password Dengan Bcrypt Pada Express.js
halo, kembali lagi dengan saya,
kali ini saya akan membagikan sebuah tutorial sederhana, yaitu “Mengamankan Password Dengan Bcrypt Pada Express.js” mungkin ini tutorial yang sangat singkat, semoga bisa mengerti dan bisa mengimplementasikan nya langsung.
contoh hash dengan Bcrypt seperti di bawah ini.
$2a$10$b9ZLeHb8O7TxLm94v0HRM.Gy1aPSGXydwf/etBm6Ix9GF4HH5Lubm
nah pada tutorial kali ini kita akan mencoba membuat hash di atas pada Express.js, metode ini biasanya di gunakan untuk Login, dan Register.
Cara pertama
saya asumsikan sudah membuat project kosongan dari express.js
install terlebih dahulu module nya, caranya :
npm install bcrypt --save
setelah itu buka route/index.js lalu jangan lupa import bcrypt nya
var bcrypt = require('bcrypt');var salt = bcrypt.genSaltSync(10);// hash password dengan salt var hash = bcrypt.hashSync("my password", salt);
nah pasti ada yang bertanya2 salt apa sih ? garam :D secara arti emang iya garam namun, secara penjelasan yang saya temui di wikipedia, silahkan di baca di bawah ini, agar lebih mengerti
“Salt memiliki arti harfiah garam (bahasa inggris). Dalam kriptografi, salt yang terdiri bit acak yang digunakan sebagai salah satu masukan untuk kunci fungsi turunan. Masukan lain biasanya kata sandi. Keluaran dari fungsi kunci turunannya disimpan sebagai sandi versi dienkripsi. Sebuah salt juga dapat digunakan sebagai bagian dari kunci dalam memecahkan algoritme kriptografi atau lainnya.”
oke saya harap sudah mengerti arti salt :D , nah sekarang kita coba buat enkripsi, hash password dengan salt, menggunakan module yang sudah kita download tadi, caranya.
var hashPassword = bcrypt.hashSync("iniSaya", salt);
"iniSaya" yang nantinya akan di hash dengen salt.console.log(hashPassword)hasilnya akan seperti di bawah
$2a$10$Dth0gezaEaUGY1.lKu5bSOBFaKRvUp7ktZE48/6Fs.rUVow.Gmube
untuk cek password sama bagaimana? nah module ini juga mempersiapkan fungsi untuk cek hash nya juga, caranya
var hash= '$2a$10$Dth0gezaEaUGY1.lKu5bSOBFaKRvUp7ktZE48/6Fs.rUVow.Gmube'var cek = bcrypt.compareSync(iniSaya, hash);jika inputan sama dengan hash hasilnya akan true jika salah akan false.kalau untuk login cek nya bagaimana ?
untuk keperluan login dll, bisa di berikan fungsi, contoh seperti di bawah
bcrypt.compare("iniSaya", hash, function(err, res) {// res === true jika password inputan benar dan sama seperti di database, jika salah akan false, tinggal di berikan logika deh. });
//hash di ambil dari database, ini saya dari inputan form, (req.body.password)
mungkin hanya itu yang bisa saya sampaikan :D , kalau ada yang kurang paham silahkan tanya lewat komentar di bawah, kalau ada yang salah2 tolong koreksi ya…
terimakasih…