Generator Hash bcrypt

hasilkan hash

Nilai lebih tinggi = lebih lambat dan lebih aman. 12 adalah pilihan bawaan yang baik.

Sesekali Anda punya hash bcrypt dari backup lama dan sebuah password plaintext, lalu perlu tahu apakah keduanya cocok. Atau Anda punya password dan ingin hash yang akan dihasilkan oleh faktor cost tertentu. Tool ini melakukan keduanya: ketik password untuk membuat hash baru, tempel hash dan kandidat password untuk mengetahui apakah verifikasi berhasil - memakai constant-time compare yang sama seperti pengecekan login produksi.

Generate atau verifikasi bcrypt

  1. 1

    Pilih mode

    Buat hash baru dari password, atau verifikasi password terhadap hash `$2a$` / `$2b$` / `$2y$` yang sudah ada.

  2. 2

    Untuk generate: masukkan plaintext dan cost

    Cost 4-14; 10-12 adalah normal. Salt acak 16 byte dibuat untuk setiap hash.

  3. 3

    Untuk verify: tempel hash dan plaintext

    Tool mengekstrak salt dan cost dari hash, lalu melakukan re-hash plaintext dengan parameter yang sama.

  4. 4

    Baca hasilnya

    Mode generate menyalin hash 60 karakter; mode verify mengembalikan match hijau atau mismatch merah.

Internal mode verify

Diberikan hash tersimpan seperti:

$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6

Verifier:

  1. Mem-parse versi (2b), cost (12), salt (22 karakter pertama setelah cost), dan digest (31 karakter terakhir).
  2. Menjalankan ulang bcrypt pada plaintext kandidat dengan salt dan cost yang diekstrak.
  3. Membandingkan digest hasil dengan digest asli memakai constant-time comparison.

Perbandingan yang berhasil menghasilkan true; perbedaan apa pun menghasilkan false.

Constant-time comparison

Membandingkan dua string dengan == yang naif akan berhenti begitu ada byte yang berbeda - timing side channel yang dapat membocorkan digit hash satu per satu jika sampelnya cukup banyak. Pengecekan password produksi (dan tool ini) memakai constant-time compare yang selalu memeriksa setiap byte, sehingga waktu keputusan tidak bergantung pada berapa banyak byte awal yang cocok.

Kasus diagnostik umum

Gejala Kemungkinan penyebab
Verifikasi gagal, Anda yakin password benar Spasi di akhir atau BOM di input. Hapus keduanya.
Verifikasi gagal, versi 2y Beberapa library tidak menyukai 2y; itu valid dan kompatibel. Re-hash dengan 2b ke depan.
Hash terlalu pendek / malformed Bukan hash bcrypt. MD5 adalah 32 karakter hex, SHA-1 40, bcrypt 60 dengan delimiter $.
Peringatan cost mismatch Cost tersimpan di bawah minimum policy Anda. Re-hash pada login berhasil berikutnya.

Rehashing saat login

Praktik terbaik: ketika user berhasil login, cek apakah hash tersimpan memiliki cost lebih rendah dari policy Anda saat ini. Jika ya, re-hash password pada cost baru dan update database. Dalam beberapa bulan, seluruh basis pengguna naik level tanpa meminta siapa pun mengganti password.

Yang tidak dilakukan tool ini

  • Verifikasi bulk - Dibuat untuk satu hash per waktu.
  • Crack atau brute force - Serangan dictionary atau rainbow-table sengaja di luar cakupan.
  • Mengambil plaintext - bcrypt satu arah; jika password terlupa, satu-satunya jalan adalah reset.

Pertanyaan yang Sering Diajukan

Tidak. Hashing dan verifikasi terjadi di browser Anda. Baik plaintext maupun hash tidak meninggalkan halaman.

Salt dibuat acak per hash. Itulah inti keamanannya - dua user dengan password yang sama mendapatkan hash berbeda, sehingga rainbow tables kalah.

Ya, tepat itulah fungsi mode verify: tempel hash yang Anda punya, tempel kandidat password, lalu tool mengonfirmasi atau menolak kecocokan.

Ya. Semua varian modern interoperable - digest kompatibel lintas versi; yang berbeda hanya tag. Beberapa hash $2$ lama dari sistem era 2000 mungkin membutuhkan library dengan dukungan legacy eksplisit.

Alat Terkait