Du får aldrig behålla ett lösenord i klartext när du bekräftar en användare eller gör något liknande.
Eftersom många individer använder samma lösenord, om en angripare upptäcker en databas med okrypterade lösenord, kan de enkelt användas i kombination med matchande e-postmeddelanden för att komma in på den länkade webbplatsen eller kontot och till och med användas för att försöka komma åt andra konton.
Lösenord hashas ofta idag när ett lösenord tillhandahålls. Det rekommenderas att hasha med salt och förvara saltet tillsammans med det hashade lösenordet.
Saltning kan tyckas vara ett av stegen i ett recept för hash browns, men i kryptografi hänvisar det till att lägga till slumpmässiga data till en hashfunktions indata för att säkerställa att hashen alltid ger ett unikt resultat även om inmatningarna är identiska.
Som ett resultat kan den distinkta hashen som skapas genom att lägga till saltet försvara oss från flera attackmetoder, inklusive hashtabellsangrepp, samtidigt som den kväver ordbok och brute-force offlineförsök.
Här, med hjälp av kodsnuttar, kommer vi att visa hur du använder 'bcrypt' för att säkra dina lösenord.
Så, vad är 'bcrypt'?
Bcrypt är ett hashbibliotek som stöder flera språk och ger speciell lösenordskryptering. För att öka säkerheten för ditt lösenord, producerar det automatiskt ytterligare slumpmässiga tecken (salt) när du krypterar din sträng.
Du kan också välja att definiera hur många ytterligare tecken du vill lägga till i en inkommande sträng.
Bcrypt-biblioteket läser bara bytekod, inte råsträngar. Innan du skickar in en inkommande lösenordssträng till bcrypt för kryptering måste du därför först koda den.
Kryptering och kodning är inte samma saker. Det ser bara till att en sträng är maskinläsbar innan den täcks av en krypteringsteknik.
Använda bcrypt för att kryptera ett lösenord i Python
Python gör bcrypt lösenordskryptering enkel. Vi kommer att koncentrera oss på att göra detta utan hjälp av ett ramverk. Men oroa dig inte, om du förstår hur man sparar användarinmatningar och läser dem från databasen, är proceduren densamma i ramverk.
Installation
Du behöver bara ställa in en virtuell Python-miljö och sedan använda en IDE som PyCharm. Biblioteket måste då installeras först:
Krypterar lösenord
Låt oss se hur man använder bcrypt för att kryptera en text efter att den har installerats:
Den tidigare nämnda Python-koden exekverar och matar ut en krypterad bytesträng. Men varje gång du kör skriptet blir resultatet annorlunda. Bcrypt använder den här metoden för att se till att varje användare har ett lösenord som är specifikt krypterat.
Det är för övrigt för lösenordskryptering.
Lösenordsjämförelse och bekräftelse med Bcrypt
Vad händer om du vill spara det hashade lösenordet och senare kontrollera om det matchar lösenordet som en användare skickade in för autentisering?
Det är enkelt. Endast autentiseringslösenordet måste jämföras med databasens post (eller i minnet i detta fall).
Autentiseringslösenordet måste också kodas innan det jämförs med det i databasen eftersom bcrypt bara kan läsa bytesträngar. I grund och botten kommer du att jämföra en kodad autentiseringsindata med det kodade hashade lösenordet du för närvarande har i din databas.
Låt oss testa detta genom att använda fiktiva Python-ingångar:
När du kör ovannämnda kod uppmanas du att ange ett nytt lösenord. Detta sparas i minnet av Python. I autentiseringssektionen anger du sedan samma lösenord, som är privat för dig.
Om lösenordet jämförs och det som tidigare var krypterat och sparat matchningen, avger Python ett framgångsmeddelande.
Om inte skrivs felmeddelandet ut och sedan läggs den andra meningen till.
Grundidén är identisk med att registrera och sedan tillhandahålla ett lösenord till en databas för autentisering.
Slutsats
Även om vi helt enkelt har använt krypterade lösenord för att visa hur bcrypt fungerar i vanligt Python-kortminne, ligger dess faktiska tillämplighet i användarbaserade appar.
Ändå visar den här artikeln de grundläggande metoderna för att organisera din kod för att åstadkomma detta, även under verkliga omständigheter.
Om du till exempel använder Flask kan du tillhandahålla registrerings- och autentiseringsfälten via separata webbformulär istället för inmatningar.
Naturligtvis, medan du jämför lösenord, kommer du att läsa från en databas som innehåller krypterade lösenord som förvaras i den verkliga världen.
Jona Nitsch
Tack för denna enkla och enkla förklaring,
Detta hjälpte mig mycket i mitt nuvarande projekt.
Jag tycker att det är väldigt bra att exempelkoden är begränsad till ett minimum och inte överbelastad som så många andra förklaringar.
Med vänliga hälsningar