Generator bcrypt
bcrypt masih menjadi salah satu pilihan paling aman untuk menyimpan password. Ia sengaja dibuat lambat, membuat salt sendiri, dan dapat diskalakan menghadapi peningkatan hardware melalui parameter cost yang bisa diatur. Generator ini menghasilkan hash bcrypt yang sesuai standar dari password plaintext, sehingga Anda dapat membuat user uji, memigrasikan akun antar sistem, atau membandingkan nilai dengan hash yang sudah ada di kolom users.password.
Cara membuat hash password dengan bcrypt
-
1
Masukkan password plaintext
Hingga 72 byte - bcrypt diam-diam memotong input setelah batas itu.
-
2
Pilih faktor cost
10 adalah default saat ini; 12 umum untuk sistem baru; 14 sangat konservatif. Setiap +1 kira-kira menggandakan waktu hashing.
-
3
Salt acak dibuat
Salt 16 byte diambil dari RNG kriptografis dan disematkan dalam string hash yang dihasilkan.
-
4
Salin hash
Output berupa string self-describing seperti `$2b$12$...` yang mencakup versi, cost, salt, dan digest.
Anatomi hash bcrypt
$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6
| | | |
| | salt (22 karakter Base64) digest (31 karakter Base64)
| cost (2 digit, 4-31)
versi (2a, 2b, 2y - semuanya bcrypt)
Seluruh string panjangnya 60 karakter. Kolom bertipe VARCHAR(60) atau CHAR(60) adalah skema standar.
Rekomendasi faktor cost
| Cost | Perkiraan waktu per hash (CPU 2024) | Penggunaan |
|---|---|---|
| 10 | ~80 ms | Default lama, masih dapat diterima |
| 12 | ~300 ms | Baseline rekomendasi saat ini |
| 13 | ~600 ms | Aplikasi dengan keamanan lebih tinggi |
| 14 | ~1.2 s | Sangat konservatif; delay login terasa |
Setiap kenaikan menggandakan work factor. Jika latensi login di bawah 500 ms sangat penting, tetap di 10-12.
Byte versi: 2a vs 2b vs 2y
$2a$- Spesifikasi asli 1999. Sebagian besar library menghasilkan hash2a.$2b$- Revisi 2014 yang memperbaiki bug truncation di crypt_blowfish. Lebih disukai untuk hash baru.$2y$- Tag khusus PHP, secara fungsional setara dengan$2b$.
Ketiganya bisa diverifikasi satu sama lain; yang berbeda hanya tag pada string hash.
Perlindungan yang diberikan bcrypt
- Rainbow tables - Salt unik per hash mengalahkan lookup yang sudah diprakomputasi.
- Cracking GPU/ASIC - Key schedule Blowfish bersifat memory-bound dan tidak ramah GPU. Tidak sekeras Argon2 terhadap GPU, tetapi masih lambat untuk brute force.
- Kebocoran database - Plaintext tidak pernah bisa dipulihkan dari hash tanpa brute force.
Yang TIDAK dilindungi bcrypt: password lemah (gunakan panjang minimum dan cek terhadap daftar breach), credential stuffing (gunakan faktor kedua), phishing.
Batas 72 byte
bcrypt hanya memakai 72 byte pertama dari password. Input lebih panjang dipotong diam-diam; alasan yang sama membuat banyak library kini merekomendasikan pre-hashing password dengan SHA-256 sebelum memasukkannya ke bcrypt. Alternatif modern (Argon2, scrypt) tidak memiliki batas ini.
Pertanyaan yang Sering Diajukan
Ya untuk penyimpanan password, pada cost ≥ 12. OWASP masih mencantumkannya sebagai algoritma yang dapat diterima. Argon2id adalah pilihan yang lebih disukai untuk sistem baru, tetapi memigrasikan hash bcrypt legacy adalah prioritas rendah.
Karena salt dibuat acak per hash. Verifikasi mengambil salt dari hash tersimpan, melakukan re-hash password yang dikirim dengan salt itu, lalu membandingkannya.
Sebagian besar library tidak mengekspos ini, dan ada alasan bagus - salt yang bisa diprediksi mengalahkan tujuannya. Gunakan salt yang dibuat library; itulah jalur yang aman.
Ya - work factor bersifat simetris. Memverifikasi hash cost-14 membutuhkan waktu 16x lebih lama daripada memverifikasi hash cost-10. Sesuaikan dengan throughput login Anda.
Alat Terkait
Pengode sandi A1Z26
Kodekan teks dengan sandi A1Z26 (A=1, B=2, ... Z=26) atau baca kembali urutan angka menjadi huruf, dengan pemisah yang bisa disesuaikan.
Enkripsi / Dekripsi AES
Enkripsi dan dekripsi teks berisiko rendah dengan cipher AES OpenSSL. Passphrase di-hash dengan SHA-256 dan output Base64 berisi IV plus teks terenkripsi.
Encoder Sandi Atbash
Encode atau decode teks dengan sandi Atbash, substitusi Ibrani yang memetakan A-Z menjadi Z-A. Operasi yang sama mengenkripsi dan mendekripsi.
Generator Hash bcrypt
Buat hash bcrypt atau verifikasi password plaintext terhadap hash bcrypt yang sudah ada. Mode generate dan verify berdampingan dalam satu tool.
Encoder dan Decoder Base32
Encode dan decode string Base32 memakai alfabet RFC 4648. Berguna untuk secret TOTP, token case-insensitive, dan identifier yang diketik manusia.
Encoder dan Decoder Base85
Encode dan decode Base85 dalam varian Adobe Ascii85 (PostScript/PDF) atau Z85 (ZeroMQ). Lebih ringkas daripada Base64 untuk data biner.