Bcrypt

bcrypt adalah fungsi password-hashing yang dirancang untuk menyimpan kredensial user di database backend. Berbeda dengan hash general-purpose seperti SHA Family atau MD5 yang dioptimalkan untuk kecepatan, bcrypt sengaja lambat dan boros sumber daya — penalti performa ini adalah fitur keamanan yang menetralkan brute force dan cracking berbasis hardware.

Dalam peta Web Security Knowledge, bcrypt adalah jawaban yang benar untuk penyimpanan password, menggantikan pemakaian hash cepat atau rusak.

Cara kerja

bcrypt berbasis Blowfish block cipher dengan dua mekanisme utama:

Format output bcrypt memuat semua metadata verifikasi, misalnya $2b$12$...: $2b$ adalah varian algoritme, 12 adalah cost (2^12 = 4.096 iterasi), 22 karakter berikut adalah salt base64, sisanya adalah hash. Backend tidak perlu kolom terpisah untuk salt atau cost.

Batas pemakaian

Hashing adalah transformasi satu arah — tidak mungkin mendekripsi hash bcrypt kembali ke plaintext. Verifikasi hanya membandingkan hasil hashing input baru dengan parameter yang sama.

Cost factor harus di-benchmark pada hardware backend yang sebenarnya dan ditinjau berkala. Cost terlalu rendah melemahkan proteksi terhadap GPU modern; terlalu tinggi membuka risiko denial-of-service saat lonjakan login konkuren menghabiskan CPU.

Dibanding Scrypt yang memory-hard, bcrypt lebih menuntut CPU daripada memori. Keduanya (dan Argon2) adalah pilihan yang sah dengan salt acak per password. Lihat Authentication Strategies untuk pemilihan strategi dan Password Security di Supabase untuk contoh operasional bcrypt di auth.users.encrypted_password.

Sumber