Generator Bcrypt
Ustvarite zgoščeno geslo bcrypt z naključno 16-bajtno soljo in stroškovnim faktorjem od 4 do 12. Orodje vrne standardni modularni niz, ki se začne z $2a$, in ga sprejemajo PHP password_verify, Node.js bcrypt, Spring Security ter večina ogrodij. Uporabite ga za pripravo testnih uporabnikov, ponastavitev skrbniškega gesla v zbirki podatkov ali preverjanje lastne kode za zgoščevanje. Geslo se nikoli ne prikaže v odgovoru ali shrani.
Pogosta vprašanja
Kaj je bcrypt?
Bcrypt je funkcija za zgoščevanje gesel iz 1999, ki temelji na šifri Blowfish. Združuje naključno sol s prilagodljivim stroškom, zato vsak dodaten stroškovni korak podvoji delo, ki ga mora napadalec opraviti za vsak poskus. Še vedno je široko podprta izbira za shranjevanje gesel.
Kaj pomeni izhodni niz?
Zgoščena vrednost, kot je $2a$10$, ki ji sledi 53 znakov, vsebuje različico 2a, strošek 10, 22-mestno sol in 31-mestno zgoščeno vrednost, vse zapisano z lastno abecedo bcrypt Base64. Shranite celoten niz, saj preverjevalnik iz njega prebere sol in strošek.
Kateri stroškovni faktor naj izberem?
Orodje omogoča strošek od 4 do 12 in privzeto uporablja 10, kar je običajna privzeta nastavitev ogrodij. Vsak korak podvoji čas, zato strošek 12 traja približno štirikrat dlje kot strošek 10. V produkciji izberite najvišji strošek, ki ga vaši strežniki zmorejo v približno 100 do 250 milisekundah.
Zakaj je strošek omejen na 12?
Višji stroški zahtevajo več sekund na zgoščeno vrednost, zato bi lahko ena zahteva za dolgo zasedla strežnik. Strošek 12 je že dovolj močan za večino aplikacij; po potrebi lahko v svojem okolju znova zgostite z višjim stroškom.
Zakaj isto geslo vsakič ustvari drugačno zgoščeno vrednost?
Orodje za vsako zgoščeno vrednost ustvari novo naključno 16-bajtno sol. Različne soli dajo različne nize, vendar se vsi preverijo z istim geslom. Tako napadalcem preprečite uporabo vnaprej izračunanih tabel.
Ali obstaja omejitev dolžine gesla?
Da. Bcrypt uporabi samo prvih 72 bajtov gesla, zato orodje daljša gesla zavrne, namesto da bi preostanek tiho prezrlo. Znaki, ki niso ASCII, v UTF-8 zasedejo po več bajtov.
Ali bodo PHP ali Laravel sprejeli zgoščeno vrednost $2a$?
Da. PHP password_verify, Laravel, Symfony in WordPress vtičniki, ki uporabljajo password_hash, sprejemajo zgoščene vrednosti $2a$, $2b$ in $2y$, ki se razlikujejo le zaradi popravkov zgodovinskih napak. Node.js bcrypt, bcryptjs, Python bcrypt in Spring Security prav tako sprejemajo $2a$.
Ali se moje geslo shrani ali zabeleži?
Ne. Geslo se uporabi samo za izračun zgoščene vrednosti med zahtevo. Iz odgovora se odstrani in nikoli ne zapiše v dnevnike ali shrambo.
Naj uporabim bcrypt ali Argon2?
Argon2id je novejše priporočilo OWASP, ker zahteva veliko pomnilnika, kar podraži napade z grafičnimi procesorji. Bcrypt je še vedno sprejemljiv in ga podpira zelo širok nabor knjižnic, zato je dobra izbira, kadar Argon2 ni na voljo.
Kako preverim geslo glede na zgoščeno vrednost bcrypt?
Uporabite orodje Bcrypt Verifier na tem spletnem mestu ali pokličite funkcijo verify v svojem ogrodju. Nikoli neposredno ne primerjajte nizov bcrypt, saj je nova zgoščena vrednost istega gesla vedno videti drugače.