Bcrypt, Hash Dan Autentication Sandi Di Node.js
Pada artikel ini, kita akan membahas cara melakukan hashing kata sandi menggunakan Node.js Bcrypt yang disebut bcrypt.js.
Bcrypt adalah salah satu enkripsi libraries yang paling banyak digunakan saat ini. Ini menggabungkan enkripsi hash, yang memungkinkan Kamu untuk menentukan seberapa pentingnya fungsi hash (yaitu berapa lama waktu yang dibutuhkan untuk mendekripnya dengan tindakan brute force). Oleh karena itu ia mengikuti acuan yang disebut Moore's law, sehingga ketika komputer menjadi lebih cepat Kamu dapat meningkatkan faktor kerja dan hash akan menjadi lebih lambat Ketika dilakukan tindakan brute force.
Catatan: pastikan Kamu telah menginstal Node.js dan pengaturan direktori aplikasi sesuai dengan artikel kita kali ini.
Mari kita mulai
Sebelum itu, kita perlu menginstal paket bcrypt.js melalui NPM.
Kamu dapat menginstalnya dengan salah satu perintah di bawah ini:
NPM
npm install bcryptjs --save
YARN
yarn add bcryptjs
Setelah selesai menginstal, kita siap untuk bagian selanjutnya.
Hash Kata Sandi
Sekarang kita dapat melakukan hash kata sandi dan melihat bagaimana ini semua bekerja dalam praktiknya.
Berikut kode lengkapnya:
Penjelasan
Pertama, kita membuat dua variabel bernama password dan saltRounds.
Variabel password akan menjadi hash string bcrypt.
Dan bilangan bulat saltRounds memberi kita kendali atas komputasi untuk memproses data. Semakin tinggi angkanya, semakin lama waktu yang dibutuhkan untuk menghitung hash yang terkait dengan kata sandi.
Jadi, kita ingin memilih angka yang keduanya cukup tinggi untuk membuat serangan brute force memakan waktu yang lama. 10 adalah nilai saltRounds default.
Kita kemudian melakukan dua hal secara berurutan untuk menghasilkan hash kita:
- membuat salt menggunakan bilangan bulat .
- Buat string hash untuk kata sandi kita "mypass123".
Kita menggunakan fungsi bcrypt.genSalt() untuk menghasilkan salt. Fungsi ini mengambil bilangan bulat saltRounds kita dari 10 sebagai parameter dan mengembalikan fungsi callback dengan hasil salt yang dihasilkan.
Dan kita menggunakan fungsi bcrypt.hash() untuk menghasilkan hash. Dibutuhkan kata sandi "mypass123" dan salt yang kita hasilkan sebagai parameter. Dalam fungsi callback, ini mengembalikan string hash yang dihasilkan untuk kata sandi kitadan Ketika di jalankan hasilnya akan seperti ini
Setelah berhasil membuat hashing password sesuai dengan apa yang kita inginkan sekarang kita akan sama-sama belajar Bagaimana cara kita melakukan pengecekan kata sandi yang user masukan terhadap hash ketika kita ingin mengautentikasi atau login.
Autentication Sandi
Sekarang setelah kita melakukan hashing kata sandi , kita memerlukan cara untuk membandingkannya dengan string yang dimasukkan oleh user dan melihat apakah itu cocok dengan kata sandi asli yang ada dalam database.
Bcrypt memiliki cara bawaan untuk melakukan ini.
Kode lengkap (pastikan Kamu mengganti YOUR_HASH_STRING dengan hash yang kita buat di bagian terakhir):
Selesai.