Šifrování hesel maskuje uživatelská hesla, takže je těžké je uhodnout nebo dekódovat. Je to nezbytný krok při vývoji bezpečného uživatelského softwaru. Bez ohledu na to, zda jej vytváříte pomocí Flask nebo jiného lehkého Python Frameworku, tento krok nemůžete ignorovat. Zde přichází na řadu bcrypt.
Ukážeme vám, jak použít bcrypt k hašování hesla v Pythonu.
Jak bcrypt funguje
Bcrypt je jazykově agnostická hašovací knihovna, která nabízí jedinečné šifrování hesel. Při šifrování vašeho řetězce ve výchozím nastavení generuje další náhodné znaky (sůl), aby se zvýšila bezpečnost vašeho hesla.
Volitelně můžete také určit počet dalších znaků, které chcete přidat do příchozího řetězce.
Knihovna Thebcrypt nečte surové řetězce – pouze bajtový kód. Pro začátek tedy nejprve zakódujete příchozí řetězec hesla, než jej předáte do bcrypt k zašifrování.
Kódování není totéž jako šifrování. Zajistí pouze, že se řetězec stane strojově čitelným, než jej šifrovací algoritmus dokáže zamaskovat.
Šifrování hesla v Pythonu pomocí bcrypt
bcrypt šifrování hesla je s Pythonem snadné. Zaměříme se na to, jak to udělat bez použití frameworku. Ale žádný strach, postupuje se stejným způsobem ve frameworkech, jakmile víte, jak ukládat vstupy vašich uživatelů a číst je z databáze.
Nainstalujte a nastavte bcrypt
Pokud jste tak ještě neučinili, aktivovat virtuální prostředí Pythonu v kořenovém adresáři vašeho projektu. Poté nainstalujte bcrypt pomocí pip:
pip install bcrpyt
Spusťte šifrování hesel
Po instalaci se podívejme, jak zašifrovat řetězec pomocí bcrypt:
# Importovat bcrypt:
importovat bcrypt
heslo = "mypasswordstring"
# Zakódujte heslo do čitelného utf-8 bajtového kódu:
heslo = password.encode('utf-8')
# Hashujte zakódované heslo a vygenerujte sůl:
hasshedPassword = bcrypt.hashpw (heslo, bcrypt.gensalt())
tisknout (hashedPassword)
Když vás spusťte kód Pythonu výše vytiskne zašifrovaný bajtový řetězec. Výstup se však při každém spuštění skriptu změní. Tímto způsobem bcrypt zajišťuje, že každý uživatel má jedinečně zašifrované heslo.
To je mimochodem pro šifrování hesel.
Jak porovnávat a potvrzovat hesla pomocí bcrypt
Co když chcete uložit hashované heslo a později potvrdit, že odpovídá heslu poskytnutému uživatelem během ověřování?
To je jednoduché. Stačí pouze porovnat ověřovací heslo s heslem uloženým v databázi (nebo v tomto případě v paměti).
A protože bcrypt čte pouze bajtové řetězce, budete také muset zakódovat ověřovací heslo, než jej porovnáte s heslem v databázi. V podstatě zkontrolujete zakódovaný autentizační vstup se zakódovaným hashovaným heslem, které je již uloženo ve vaší databázi.
Pomocí fiktivních vstupů Pythonu se podívejme, jak to funguje v praxi:
importovat bcrypt
#uložte své heslo:
heslo = str (vstup("zadat heslo: "))
# Zakódujte uložené heslo:
heslo = password.encode('utf-8')
# Zašifrujte uložené heslo:
hash = bcrypt.hashpw (heslo, bcrypt.gensalt (10))
# Vytvořte pole pro zadání hesla pro ověření, abyste mohli zkontrolovat, zda uživatel zadává správné heslo:
check = str (input("kontrola hesla: "))
# Zakódujte také ověřovací heslo:
check = check.encode('utf-8')
# Použijte podmínky k porovnání ověřovacího hesla s uloženým heslem:
if bcrypt.checkpw (kontrola, hash):
tisk ("úspěšné přihlášení")
jiný:
print("nesprávné heslo")
Výše uvedený kód vás při spuštění požádá o zadání nového hesla. Python to ukládá do paměti. Poté uvedete stejné heslo (známé pouze vám) do pole pro ověřování.
Python vytiskne zprávu o úspěchu, pokud se porovnávané heslo shoduje s dříve uloženým zašifrovaným heslem. V opačném případě vypíše neúspěšnou zprávu zabalenou do jiný tvrzení:
Celý koncept je stejný jako uložení hesla do databáze při registraci a jeho poskytnutí později při autentizaci.
Škálování šifrování s bcrypt
I když jsme pouze demonstrovali, jak bcrypt funguje ukládáním zašifrovaných hesel do obyčejné krátké paměti Pythonu, jeho konečné využití je v aplikacích skutečné uživatelské základny.
Nicméně tento tutoriál ukazuje základní způsoby, jak strukturovat kód, abyste toho dosáhli, a to i v reálných scénářích. Pokud například používáte Flask, můžete nahradit vstupy samostatnými webovými formuláři, které budou sloužit pro pole registrace a ověřování. A samozřejmě si zašifrovaná hesla uložíte do reálné databáze a z ní budete číst při porovnávání hesel.
Všichni mluví o šifrování, ale ocitnete se ztracení nebo zmatení? Zde jsou některé klíčové termíny šifrování, které potřebujete znát.
Přečtěte si další
- Programování
- Krajta
- Programování
- Bezpečnostní
Idowu je nadšený z jakékoli chytré technologie a produktivity. Ve volném čase si hraje s kódováním a když se nudí, přepne na šachovnici, ale také se rád jednou za čas odpoutá od rutiny. Jeho vášeň ukazovat lidem cestu kolem moderních technologií ho motivuje k dalšímu psaní.
Přihlaste se k odběru našeho newsletteru
Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!
Chcete-li se přihlásit k odběru, klikněte sem