§

Penjana Bcrypt

§

Hasilkan Hash Bcrypt

10 (1,024 rounds)

Bcrypt telah menjadi skim hash kata laluan piawai dalam pembangunan web sejak diperkenalkan pada tahun 1999 oleh Provos dan Mazières. NIST SP 800-63B mengesyorkan hashing memori-keras untuk penyimpanan kata laluan, dan OWASP menyenaraikan bcrypt sebagai pilihan utama bersama Argon2id. Rails menghantar bcrypt melalui has_secure_password, Django menyokongnya sebagai backend pasang-plag, dan pembangun Node.js menggunakan bcryptjs. Faktor kos mengawal tempoh satu hash dihasilkan — menggandakan kos menggandakan kerja. Kebanyakan aplikasi menggunakan kos 10 (1,024 pusingan) sebagai asas, manakala sistem kewangan atau admin sering menggunakan 12 (4,096 pusingan). Alat ini berjalan sepenuhnya dalam pelayar menggunakan JavaScript, jadi kata laluan anda tidak pernah meninggalkan mesin anda.

Apakah bcrypt?

Bcrypt ialah fungsi hash kata laluan yang direka oleh Niels Provos dan David Mazières, berdasarkan cipher Blowfish. Tidak seperti digest pantas seperti MD5 atau SHA-256, bcrypt sengaja dibuat perlahan dan mahal dari segi pengiraan — ini menjadikan serangan brute-force terhadap hash kata laluan yang dicuri tidak praktikal. Bcrypt secara automatik menghasilkan garam rawak setiap kata laluan, jadi kata laluan yang sama menghasilkan hash yang berbeza.

Bagaimana bcrypt berfungsi?

Algoritma bcrypt berjalan sepenuhnya dalam pelayar anda. Berikut adalah langkah demi langkah:

  1. Kata laluan anda dikodkan sebagai bait UTF-8 dan dimasukkan ke dalam jadual kunci bcrypt, yang memulakan tatasusunan-P 4,184-bait dan S-box cipher Blowfish menggunakan kata laluan dan garam.
  2. Garam rawak 128-bit dihasilkan. Garam dicampur ke dalam jadual kunci supaya setiap garam unik menghasilkan hash yang berbeza sepenuhnya walaupun untuk kata laluan yang sama.
  3. Jadual kunci diulang sebanyak 2^cost pusingan (cth., 2^10 = 1,024 lelaran pada kos 10). Setiap lelaran menyulit semula entri garam dan tatasusunan-P, menjadikan pengiraan semakin perlahan apabila kos meningkat.
  4. Output akhir ialah rentetan 60 aksara dalam format $2b$<cost>$<salt><hash>, di mana cost diisi sifar (cth., 10), salt ialah 22 aksara Base64, dan hash ialah 31 aksara Base64.
  5. Untuk pengesahan, algoritma yang sama dijalankan semula dengan kata laluan calon dan garam yang diambil daripada hash yang disimpan. Jika hash terbitan sepadan dengan hash yang disimpan, kata laluan adalah betul.

Faktor kos yang mana patut saya gunakan?

Faktor kos ialah logaritma bilangan lelaran — kos 10 bermaksud 2^10 = 1,024 pusingan, kos 12 bermaksud 4,096 pusingan. Pilih berdasarkan keperluan keselamatan dan perkakasan anda:

  • Kos 4-6 (16-64 pusingan) — hanya untuk pembangunan dan ujian. Terlalu pantas untuk penggunaan pengeluaran; memberikan perlindungan minimum.
  • Kos 8 (256 pusingan) — minimum untuk aplikasi tidak kritikal. Sekitar 6ms pada perkakasan moden.
  • Kos 10 (1,024 pusingan) — asas yang disyorkan semasa. Mengambil kira-kira 25ms. Baik untuk kebanyakan aplikasi web.
  • Kos 12 (4,096 pusingan) — disyorkan untuk portal admin, sistem kewangan, dan aplikasi keselamatan tinggi. Mengambil kira-kira 100ms.
  • Kos 14 (16,384 pusingan) — keselamatan tinggi. Mengambil kira-kira 400ms. Gunakan untuk kata laluan induk, kunci penyulitan, atau apabila latensi log masuk boleh diterima.

Mengapa gunakan penjana bcrypt ini?

  • Privasi anda dilindungi — setiap kata laluan di-hash secara setempat dalam pelayar anda, dan tiada data meninggalkan peranti anda.
  • Anda mendapat kedua-dua mod bersebelahan: hasilkan hash baru atau sahkan yang sedia ada tanpa bertukar halaman.
  • Faktor kos boleh laras dari 4 (pantas) hingga 15 (sangat perlahan), membolehkan anda memadankan keperluan keselamatan aplikasi anda.
  • Hash menggunakan format piawai $2b$ yang berfungsi dengan setiap bahasa dan rangka kerja utama.

Apakah aplikasi biasa bcrypt?

Bcrypt digunakan secara meluas untuk penyimpanan dan pengesahan kata laluan di seluruh industri:

  • Pengesahan pengguna aplikasi web — menyimpan hash kata laluan pengguna dalam pangkalan data supaya kata laluan teks biasa tidak pernah disimpan.
  • Hash kunci API — menghash rahsia API sebelum menyimpannya, supaya pelanggaran pangkalan data tidak membocorkan kelayakan yang sah.
  • Audit migrasi — memeriksa bahawa hash kata laluan lama daripada sistem lama masih boleh mengesahkan pengguna selepas menaik taraf lapisan pengesahan.

Bagaimanakah rupa hash bcrypt?

Hash kata laluan hunter2 dengan faktor kos 10 menghasilkan rentetan seperti $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy. Formatnya dipecahkan sebagai: $2b$ (versi algoritma), 10 (faktor kos), $, kemudian 22 aksara garam dan 31 aksara hash, semuanya dikod Base64. Setiap kali dijalankan dengan kata laluan yang sama menghasilkan hash yang berbeza kerana garam rawak.

Penjana bcrypt ini berjalan sepenuhnya dalam pelayar anda menggunakan pelaksanaan JavaScript tulen. Hash kata laluan sebelum menyimpannya, sahkan hash sedia ada, dan laraskan faktor kos mengikut keperluan keselamatan anda — semuanya tanpa menghantar satu bait pun ke pelayan.