Pack Camo

Generator Hash Bcrypt & Argon2

Buat hash password dengan bcrypt atau Argon2id, atau verifikasi dengan hash tersimpan.

Semuanya berjalan di perangkat Anda — tidak ada yang diunggah.

28 byte

Hash terenkode muncul di sini.

Buat hash password dengan bcrypt atau Argon2, atau cocokkan dengan hash tersimpan

Generator hash password ini membuat hash bcrypt (<code>$2b$</code>, cost 4 sampai 15) serta hash Argon2id, Argon2i dan Argon2d dalam format string PHC standar, dengan ukuran memori, iterasi, paralelisme, salt dan output sesuai keinginan Anda. Beralih ke <strong>Verifikasi</strong> untuk menempelkan hash dari database Anda, mengenali algoritma dan parameternya dari prefiks, lalu menguji apakah sebuah password cocok. Setiap hash memakai salt acak baru dan menampilkan berapa lama prosesnya di perangkat Anda. Hashing berjalan dengan WebAssembly di browser Anda; password tidak pernah diunggah.

Cara membuat hash bcrypt atau Argon2

  1. 1Pilih Hash, lalu algoritmanya: Argon2id untuk sistem baru, bcrypt untuk menyamakan dengan sistem yang sudah ada.
  2. 2Atur cost: faktor cost bcrypt, atau preset Argon2 seperti OWASP 19 MiB, t=2. Sesuaikan memori, iterasi dan paralelisme secara manual jika perlu menyamakan konfigurasi.
  3. 3Ketik password lalu tekan Hash password. Hash terenkode, bagian-bagiannya dan waktu prosesnya muncul di bawah.
  4. 4Untuk memeriksa hash, pilih Verifikasi, tempel hash tersimpan dan password, lalu tekan Verifikasi.

Mengapa password butuh hash yang lambat

Hash cepat seperti SHA-256 bukan alat yang tepat untuk password. Satu kartu grafis bisa menghitung miliaran hash SHA-256 per detik, sehingga tabel hash password SHA-256 yang bocor bisa ditebak secepat itu. Fungsi hashing password sengaja dibuat lambat dan, pada Argon2, membutuhkan banyak memori, sehingga setiap tebakan memakan waktu dan perangkat keras yang nyata. Pengaturan yang memakan seperempat detik di server Anda juga membuat penyerang membayar seperempat detik yang sama untuk setiap tebakan, untuk setiap pengguna.

Setiap hash juga membawa salt acaknya sendiri, sehingga dua pengguna dengan password yang sama mendapat hash berbeda dan tabel yang dihitung sebelumnya tidak berguna. Salt dan semua parameter disimpan di dalam string hash, itulah sebabnya library bisa memverifikasi password hanya dari hash-nya.

Membaca hash bcrypt

Hash bcrypt seperti $2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW terdiri dari empat bagian: versi 2b, cost 12 (212 = 4.096 putaran key expansion), salt 22 karakter dan hash 31 karakter, keduanya dalam alfabet Base64 khas bcrypt. Setiap kenaikan cost menggandakan waktunya.

$2a$, $2b$ dan $2y$ menghasilkan hasil yang sama untuk password hingga 72 byte; hurufnya menandai perbaikan bug implementasi lama. bcrypt hanya membaca 72 byte pertama password dan mengabaikan sisanya, dan alat ini memberi peringatan soal itu — passphrase panjang, atau password dalam aksara non-Latin yang satu karakternya memakan dua sampai empat byte, bisa mencapai batas itu lebih cepat dari dugaan Anda.

Argon2id, Argon2i dan Argon2d

String PHC mencatat semua yang dibutuhkan untuk verifikasi: $argon2id$v=19$m=19456,t=2,p=1$<salt>$<hash> berarti versi 1.3, memori 19.456 KiB, 2 pass dan 1 lane, diikuti salt dan hash dalam Base64 tanpa padding.

Argon2id
Gabungan dari dua varian di bawah dan varian yang direkomendasikan RFC 9106 dan OWASP untuk penyimpanan password. Gunakan ini kecuali ada alasan kuat untuk yang lain.
Argon2i
Akses memori tidak bergantung pada password, sehingga tahan serangan side-channel tetapi lebih lemah terhadap cracking GPU dengan jumlah pass yang sedikit.
Argon2d
Akses memori bergantung pada password: paling kuat melawan GPU, tetapi rentan side-channel. Cocok untuk proof-of-work, bukan untuk server yang memeriksa login.

Pengaturan yang direkomendasikan

  • Argon2id: OWASP merekomendasikan memori 19 MiB dengan 2 iterasi dan paralelisme 1, atau kompromi setara seperti 47 MiB dengan 1 iterasi atau 12 MiB dengan 3. RFC 9106 menyarankan 64 MiB, 3 iterasi dan 4 lane jika memori memungkinkan.
  • bcrypt: cost minimal 10; 12 adalah default yang umum saat ini. Pilih cost tertinggi yang sanggup ditangani endpoint login Anda — sekitar 250 ms per hash di server adalah target yang wajar.
  • Salt: 16 byte acak. Panjang hash: 32 byte sudah lebih dari cukup.
  • Waktu yang diukur di sini adalah di perangkat Anda, dengan WebAssembly, yang biasanya lebih lambat daripada library native di server. Lakukan benchmark di hardware produksi Anda sebelum menetapkan cost.

Kapan memakai alat ini

Gunakan untuk membuat hash bagi pengguna seed atau file konfigurasi, memastikan hash di database Anda benar-benar cocok dengan password yang Anda kira, atau mencari tahu parameter apa yang dipakai sebuah hash. Aplikasi Anda harus melakukan hashing password dengan library-nya sendiri saat pendaftaran; jangan pernah mengirim password polos ke situs web untuk di-hash. Untuk membuat password kuat yang akan di-hash, gunakan generator password; untuk tanda tangan berkunci alih-alih penyimpanan password, lihat generator HMAC.

Pertanyaan yang sering diajukan

Sebaiknya pakai bcrypt atau Argon2?
Argon2id untuk sistem baru: algoritma ini pemenang Password Hashing Competition dan bersifat memory-hard, sehingga cracking dengan GPU dan ASIC jauh lebih mahal. bcrypt masih dapat diterima dan didukung sangat luas, jadi tetap gunakan jika stack Anda sudah memakainya.
Mengapa hash selalu berbeda untuk password yang sama?
Setiap hash memakai salt acak baru, sehingga hasilnya berubah setiap kali. Itu memang disengaja. Untuk memeriksa password, verifikasi terhadap hash tersimpan, bukan membandingkan dua hash yang baru dibuat.
Apakah hash bcrypt atau Argon2 bisa didekripsi?
Tidak. Keduanya fungsi satu arah. Satu-satunya cara menemukan password adalah menebak kandidat dan meng-hash satu per satu, yang sengaja dibuat lambat oleh algoritma ini.
Apa itu batas 72 byte pada bcrypt?
bcrypt hanya memakai 72 byte pertama password. Apa pun setelahnya tidak memengaruhi hash, sehingga dua password panjang dengan 72 byte awal yang sama menghasilkan hash yang cocok. Argon2 tidak punya batas seperti itu.
Berapa faktor cost bcrypt yang sebaiknya saya pakai?
Minimal 10, dan 12 adalah default yang umum. Setiap kenaikan menggandakan kerjanya. Pilih nilai tertinggi yang tetap membuat login cukup cepat di server Anda.
Apakah hash bcrypt $2a$, $2b$ dan $2y$ kompatibel?
Ya, untuk password hingga 72 byte ketiganya menghasilkan hash yang sama. Sebagian besar library menerima ketiga prefiks, dan alat ini memverifikasi semuanya.
Mengapa verifikasi memakan waktu selama hashing?
Verifikasi berarti meng-hash password lagi dengan salt dan parameter yang tersimpan di hash lalu membandingkan hasilnya, jadi kerjanya persis sama. Itulah yang membuat menebak menjadi mahal.
Apakah password dikirim ke server?
Tidak. bcrypt dan Argon2 berjalan dengan WebAssembly di dalam browser Anda. Tidak ada yang Anda ketik keluar dari halaman.