Lösenordskryptering maskerar användarnas lösenord så att de blir svåra att gissa eller avkoda. Det är ett viktigt steg för att utveckla säker användarbaserad programvara. Oavsett om du bygger en med Flask eller ett annat lätt Python Framework, kan du inte ignorera det steget. Det är där bcrypt kommer in.
Vi visar dig hur du använder bcrypt för att hasha ditt lösenord i Python.
Hur bcrypt fungerar
Bcrypt är ett språkagnostiskt hashbibliotek som erbjuder unik lösenordskryptering. När du krypterar din sträng genererar den extra slumpmässiga tecken (salt) som standard för att öka säkerheten för ditt lösenord.
Alternativt kan du också ange antalet extra tecken du vill lägga till i en inkommande sträng.
Thebcrypt-biblioteket läser inte råsträngar – endast bytekod. Så till att börja med, kodar du först en inkommande lösenordssträng innan du skickar den till bcrypt för kryptering.
Kodning är inte detsamma som kryptering. Det säkerställer bara att en sträng blir maskinläsbar innan en krypteringsalgoritm kan maskera den.
Kryptera ett lösenord i Python med bcrypt
Bcrypt lösenordskryptering är enkelt med Python. Vi kommer att fokusera på hur man gör detta utan att använda ett ramverk. Men inga bekymmer, det följer samma process i ramverk när du vet hur du lagrar dina användares indata och läser dem från databasen.
Installera och konfigurera bcrypt
Om du inte redan har gjort det, aktivera en virtuell Python-miljö i din projektrot. Installera sedan bcrypt med pip:
pip installera bcrpyt
Börja kryptera lösenord
När det är installerat, låt oss se hur man krypterar en sträng med bcrypt:
# Importera bcrypt:
importera bcrypt
lösenord = "mypasswordstring"
# Koda lösenord till en läsbar utf-8 byte-kod:
lösenord = password.encode('utf-8')
# Hasha det kodade lösenordet och generera ett salt:
hashedPassword = bcrypt.hashpw (lösenord, bcrypt.gensalt())
print (hashat lösenord)
När du kör Python-koden ovan skriver den ut en krypterad bytesträng. Utdata ändras dock varje gång du kör skriptet. Detta är hur bcrypt säkerställer att varje användare har ett unikt krypterat lösenord.
Det är för lösenordskryptering, förresten.
Hur man jämför och bekräftar lösenord med bcrypt
Vad händer om du vill lagra det hashade lösenordet och senare bekräfta att det matchar användarens lösenord under autentiseringen?
Det är lätt. Du behöver bara jämföra autentiseringslösenordet med det som är lagrat i databasen (eller i minnet i detta fall).
Och eftersom bcrypt bara läser bytesträngar, måste du också koda autentiseringslösenordet innan du jämför det med det i databasen. I huvudsak korskontrollerar du en kodad autentiseringsingång med det kodade hashade lösenordet som redan finns lagrat i din databas.
Med hjälp av dummy Python-ingångar, låt oss se hur detta fungerar i praktiken:
importera bcrypt
#lagra ditt lösenord:
lösenord = str (input("input lösenord: "))
# Koda det lagrade lösenordet:
lösenord = password.encode('utf-8')
# Kryptera det lagrade lösenordet:
hashed = bcrypt.hashpw (lösenord, bcrypt.gensalt (10))
# Skapa ett inmatningsfält för autentiseringslösenord för att kontrollera om en användare anger rätt lösenord:
check = str (input("kontrollera lösenord: "))
# Koda även autentiseringslösenordet:
check = check.encode('utf-8')
# Använd villkor för att jämföra autentiseringslösenordet med det lagrade:
if bcrypt.checkpw (check, hashad):
print("inloggning lyckad")
annan:
print("felaktigt lösenord")
Ovanstående kod ber dig att ange ett nytt lösenord när du kör det. Python lagrar detta i minnet. Du anger sedan samma lösenord (endast känt för dig) i autentiseringsfältet.
Python skriver ut ett framgångsmeddelande om det jämförda lösenordet matchar det tidigare lagrade krypterade. Annars matas det misslyckade meddelandet in i annan påstående:
Hela konceptet är detsamma som att lagra ett lösenord i en databas under registreringen och tillhandahålla det senare under autentiseringen.
Skala upp kryptering med bcrypt
Även om vi bara har visat hur bcrypt fungerar genom att lagra krypterade lösenord i vanligt Python-kortminne, är dess ultimata användning i verkliga användarbaserade applikationer.
Icke desto mindre visar den här handledningen de grundläggande sätten att strukturera din kod för att uppnå detta, även i verkliga scenarier. Om du till exempel använder Flask kan du ersätta indata med separata webbformulär för att tjäna registrerings- och autentiseringsfälten. Och naturligtvis kommer du att lagra krypterade lösenord i en verklig databas och läsa från den när du jämför lösenord.
Alla pratar om kryptering, men känner du dig vilsen eller förvirrad? Här är några viktiga krypteringstermer du behöver känna till.
Läs Nästa
- Programmering
- Pytonorm
- Programmering
- säkerhet

Idowu brinner för allt smart teknik och produktivitet. På fritiden leker han med kodning och byter till schackbrädet när han har tråkigt, men han älskar också att bryta sig loss från rutinen då och då. Hans passion för att visa människor vägen runt modern teknik motiverar honom att skriva mer.
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera