Šifriranje gesla prikrije uporabniška gesla, tako da jih je težko uganiti ali dekodirati. To je bistven korak pri razvoju varne uporabniške programske opreme. Ne glede na to, ali ga gradite z Flask ali drugim lahkim Python Framework, tega koraka ne morete prezreti. Tu pride na vrsto bcrypt.
Pokazali vam bomo, kako uporabiti bcrypt za zgoščevanje gesla v Pythonu.
Kako deluje bcrypt
Bcrypt je knjižnica zgoščevanja, ki je neodvisna od jezika in ponuja edinstveno šifriranje gesla. Medtem ko šifrira vaš niz, privzeto ustvari dodatne naključne znake (sol), da poveča varnost vašega gesla.
Po želji lahko določite tudi število dodatnih znakov, ki jih želite dodati dohodnemu nizu.
Knjižnica bcrypt ne bere neobdelanih nizov – samo bajtno kodo. Za začetek boste najprej kodirali dohodni niz gesla, preden ga boste posredovali v bcrypt za šifriranje.
Kodiranje ni isto kot šifriranje. Zagotavlja le, da postane niz strojno berljiv, preden ga lahko šifrirni algoritem prikrije.
Šifriranje gesla v Pythonu z bcrypt
Šifriranje gesla bcrypt je s Pythonom enostavno. Osredotočili se bomo na to, kako to storiti brez uporabe ogrodja. Toda brez skrbi, sledi enakemu postopku v okvirih, ko veste, kako shraniti uporabniške vnose in jih prebrati iz baze podatkov.
Namestite in nastavite bcrypt
Če tega še niste storili, aktivirati navidezno okolje Python v korenu vašega projekta. Nato namestite bcrypt z uporabo pip:
pip install bcrpyt
Začnite šifrirati gesla
Ko je nameščen, poglejmo, kako šifrirati niz z uporabo bcrypt:
# Uvozi bcrypt:
uvozi bcrypt
geslo = "mypasswordstring"
# Kodirajte geslo v berljivo utf-8 bajtno kodo:
geslo = password.encode('utf-8')
# Hash kodirano geslo in ustvari sol:
hasshedPassword = bcrypt.hashpw (geslo, bcrypt.gensalt())
natisni (zgoščeno geslo)
Ko ti zaženite kodo Python zgoraj natisne šifriran bajtni niz. Vendar se rezultat spremeni vsakič, ko izvedete skript. Tako bcrypt zagotavlja, da ima vsak uporabnik edinstveno šifrirano geslo.
Mimogrede, to je za šifriranje gesla.
Kako primerjati in potrditi gesla z bcrypt
Kaj pa, če želite shraniti zgoščeno geslo in pozneje potrditi, da se ujema z geslom, ki ga je navedel uporabnik med preverjanjem pristnosti?
To je lahko. Geslo za preverjanje pristnosti morate le primerjati s tistim, ki je shranjeno v bazi podatkov (ali v tem primeru v pomnilniku).
In ker bcrypt bere samo bajtne nize, boste morali kodirati tudi geslo za preverjanje pristnosti, preden ga primerjate s tistim v bazi podatkov. V bistvu boste navzkrižno preverili kodiran vhod za preverjanje pristnosti s kodiranim zgoščenim geslom, ki je že shranjeno v vaši bazi podatkov.
Z uporabo navideznih vhodov Python poglejmo, kako to deluje v praksi:
uvozi bcrypt
#shrani svoje geslo:
geslo = str (input("vnos gesla: "))
# Kodirajte shranjeno geslo:
geslo = password.encode('utf-8')
# Šifrirajte shranjeno geslo:
zgoščeno = bcrypt.hashpw (geslo, bcrypt.gensalt (10))
# Ustvarite polje za vnos gesla za preverjanje pristnosti, da preverite, ali uporabnik vnese pravilno geslo:
check = str (input("preveri geslo: "))
# Kodirajte tudi geslo za preverjanje pristnosti:
check = check.encode('utf-8')
# Uporabite pogoje za primerjavo gesla za preverjanje pristnosti s shranjenim:
če bcrypt.checkpw (preverjanje, zgoščeno):
print("uspešna prijava")
drugo:
print("napačno geslo")
Zgornja koda zahteva, da vnesete novo geslo, ko jo izvedete. Python to shrani v pomnilnik. Nato boste v polje za preverjanje pristnosti vnesli isto geslo (znano samo vam).
Python natisne sporočilo o uspehu, če se primerjano geslo ujema s predhodno shranjenim šifriranim. V nasprotnem primeru izpiše neuspešno sporočilo, zavito v drugo izjava:
Celoten koncept je enak kot shranjevanje gesla v bazo podatkov med registracijo in posredovanje pozneje med preverjanjem pristnosti.
Povečajte šifriranje z bcrypt
Čeprav smo pokazali, kako bcrypt deluje le s shranjevanjem šifriranih gesel v navaden kratek pomnilnik Python, je njegova končna uporaba v resničnih uporabniških aplikacijah.
Kljub temu ta vadnica prikazuje temeljne načine za strukturiranje vaše kode, da to dosežete, tudi v resničnih scenarijih. Če na primer uporabljate Flask, lahko vnose zamenjate z ločenimi spletnimi obrazci, ki bodo služili polji za registracijo in preverjanje pristnosti. In seveda boste šifrirana gesla shranili v realno bazo podatkov in iz nje brali pri primerjavi gesel.
Vsi govorijo o šifriranju, a se počutite izgubljeni ali zmedeni? Tukaj je nekaj ključnih izrazov šifriranja, ki jih morate poznati.
Preberite Naprej
- Programiranje
- Python
- Programiranje
- Varnost

Idowu je navdušen nad vsemi pametnimi tehnologijami in produktivnostjo. V prostem času se igra s kodiranjem in, ko mu je dolgčas, preklopi na šahovnico, rad pa se občasno odmakne od rutine. Njegova strast, da ljudem pokaže pot okoli sodobne tehnologije, ga motivira, da piše več.
Naročite se na naše novice
Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!
Kliknite tukaj, da se naročite