Bcrypt Generator at Checker
Gumawa ng bcrypt hash na may cost factor na 4 hanggang 14, i-check ang password laban sa hash, at tingnan ang bersyon, cost, salt at digest nito.
Mag-hash ng password
- Bersyon
- Cost
- Salt (22 character)
- Hash (31 character)
I-check ang password laban sa isang hash
- Bersyon
- Cost
- Salt (22 character)
- Hash (31 character)
Paano mag-hash ng password gamit ang bcrypt
- Sa ilalim ng Mag-hash ng password, i-type ang Password. Ipinapakita ng counter ang haba nito sa UTF-8 byte at binabalaan ka kapag lumampas ito sa 72 byte.
- Piliin ang Cost factor (4–14). Ipinapakita ng linya sa ibaba ang bilang ng mga round, halimbawa 10 → 2^10 = 1,024 round.
- I-click ang Gumawa ng hash. Sinusundan ng progress bar ang trabaho, at magagamit pa rin ang page habang tumatakbo ito. Kapag tapos na, ipinapakita ng tool ang tagal at ang Bcrypt hash, handa nang kopyahin.
- Hinahati ang hash sa mga bahagi nito: Bersyon, Cost, Salt (22 character) at Hash (31 character).
Para i-check ang password laban sa hash, i-type ang password, i-paste ang hash (awtomatikong napupunan ang kagagawa mo lang) at i-click ang I-check ang password. Sasabihin ng resulta kung tugma ang mga ito. Lagyan ng check ang Itago ang mga password para takpan ang dalawang password field.
Tumatakbo ang hashing sa iyong browser gamit ang bcryptjs library, na nilo-load lang kapag kailangan mo na ito sa unang pagkakataon. Walang password o hash na ipinapadala kahit saan.
Paano gumagana ang bcrypt
Ang bcrypt (Provos at Mazières, 1999) ay password hashing function na binuo sa Blowfish cipher. Taliwas sa SHA-256, sadyang mabagal ito, at naaayos ang bagal nito: ang cost factor ay power ng dalawa, kaya ang bawat +1 ay nagdodoble sa trabaho. Ang cost na 10 ay 1,024 na ulit ng magastos na key setup; ang cost na 12 ay 4,096. Halos hindi ramdam ang bagal na iyon kapag nagla-log in ang user, pero lubha nitong pinamamahal ang brute-force sa nakaw na database.
Ganito basahin ang hash gaya ng $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy:
$2b$: ang bersyon. Ang$2a$at$2y$(PHP) ay compatible at maaaring i-check dito; ang$2x$ay tanda ng mga hash mula sa lumang implementation na may bug at tinatanggihan.10: ang cost factor.- Ang susunod na 22 character: random na 128-bit na salt, sa sariling Base64 alphabet ng bcrypt (
./A-Za-z0-9). - Ang huling 31 character: ang 184-bit na resulta.
Dahil random ang salt at nakaimbak sa hash, ang pag-hash sa parehong password nang dalawang beses ay nagbibigay ng dalawang magkaibang hash, at pareho silang tamang nagve-verify. Iyan din ang dahilan kung bakit gumagamit ka ng verify function para i-check ang password sa halip na ikumpara ang mga hash.
Pagpili ng cost
Piliin ang pinakamataas na cost na kaya ng iyong server habang mabilis pa rin ang login, karaniwan ay nasa isang-kapat ng segundo bawat hash. Inirerekomenda ng OWASP ang pinakamababang cost na 10 para sa bcrypt. Pinapatakbo ng mga browser ang bcrypt sa JavaScript, na ilang beses na mas mabagal kaysa sa native na implementation ng server: mula cost 12, nagbababala ang tool na maaaring tumagal ang pag-hash ng isa hanggang ilang segundo, at nagdodoble ang oras sa bawat dagdag na hakbang. Hinahati sa maiikling bahagi ang trabaho, kaya hindi nagfi-freeze ang page.
Para sa mga bagong sistema, mas gusto na ngayon ng OWASP ang Argon2id, at katanggap-tanggap pa rin ang bcrypt kung hindi available ang Argon2id.
Ang limitasyong 72 byte
Ang unang 72 byte lang ng password ang ginagamit ng bcrypt; tahimik na binabalewala ang lahat ng kasunod. Ang byte ay hindi character: ang letrang may accent ay 2 byte sa UTF-8 at ang emoji ay 4. Ang dalawang mahabang password na pareho ang unang 72 byte ay nagbubunga ng parehong hash. Binabalaan ka ng byte counter kapag masyadong mahaba ang password. Ang ilang sistema ay nag-pre-hash ng mahahabang password (halimbawa gamit ang HMAC-SHA256, tapos Base64) bago ang bcrypt; kung gagawin mo ito, huwag magpasa ng raw binary digest, dahil tatapusin ng zero byte ang password nang maaga sa maraming implementation.
Mga madalas itanong
Bakit iba ang hash sa tuwing pareho ang password?
Bawat hash ay may bagong random na salt, na nakaimbak sa loob ng hash. Binabasa ng button na I-check ang password ang salt at cost mula sa hash at kinakalkula ito ulit, kaya nagve-verify ang bawat bersyon.
Puwede bang i-decrypt ang bcrypt hash?
Hindi. Ang bcrypt ay one-way function. Ang tanging paraan para mabawi ang password ay hulaan ito at i-hash ang bawat hula, na siyang pinapabagal ng cost factor.
Anong cost factor ang dapat kong gamitin?
Hindi bababa sa 10, at mas mataas pa kung mabilis pa rin ang iyong server. Sukatin sa hardware ng iyong production: ang oras na ipinapakita rito ay para sa JavaScript sa iyong browser, na karaniwang mas mabagal kaysa sa server.
Pareho ba ang resulta ng $2a$, $2b$ at $2y$ na hash?
Para sa mga password na wala pang 256 byte, pareho ang resulta, at sinusuri ng tool na ito ang tatlo. Inayos ng $2b$ ang bug na length-wraparound sa implementation ng OpenBSD, at ang $2y$ ang pangalan sa PHP para sa tamang implementation.
Ligtas bang mag-type ng totoong password dito?
Lokal na tumatakbo ang lahat at walang ipinapadala o iniimbak. Para sa mga totoong account, mabuti pa ring gumamit ng sample na password sa pagsubok sa halip na ang ginagamit mo talaga.
Mga kaugnay na tool
- Hash Generator Gumawa ng MD5, SHA-1, SHA-256 at SHA-512 hash ng text o mga file na anumang laki, at i-verify ang mga checksum. Lahat ay tumatakbo sa iyong browser.
- Password Generator Libreng password generator para sa malalakas na random na password na 4 hanggang 128 character, gamit ang secure na RNG sa browser. Walang sine-save.
- Password Strength Checker Subukan kung gaano katibay ang iyong password. Tingnan ang score, tinatayang oras ng pagbasag sa apat na senaryo ng atake, at mga tip, nang lokal sa browser.
- HMAC Generator Kalkulahin ang HMAC-SHA1, SHA-256, SHA-384 o SHA-512 gamit ang text, hex o Base64 na key, kumuha ng hex at Base64 na output, at i-check ang webhook signature.