Adgangskodekryptering maskerer brugernes adgangskoder, så de bliver svære at gætte eller afkode. Det er et vigtigt skridt i udviklingen af sikker brugerbaseret software. Uanset om du bygger en med Flask eller et andet let Python Framework, kan du ikke ignorere det trin. Det er her, bcrypt kommer ind.
Vi viser dig, hvordan du bruger bcrypt til at hash din adgangskode i Python.
Sådan fungerer bcrypt
Bcrypt er et sprogagnostisk hashing-bibliotek, der tilbyder unik adgangskodekryptering. Mens du krypterer din streng, genererer den ekstra tilfældige tegn (salt) som standard for at øge sikkerheden for din adgangskode.
Du kan eventuelt også angive antallet af ekstra tegn, du vil tilføje til en indgående streng.
Thebcrypt-biblioteket læser ikke rå strenge – kun bytekode. Så for at starte, skal du først kode en indgående adgangskodestreng, før du sender den til bcrypt til kryptering.
Kodning er ikke det samme som kryptering. Det sikrer kun, at en streng bliver maskinlæsbar, før en krypteringsalgoritme kan maskere den.
Kryptering af en adgangskode i Python med bcrypt
bcrypt adgangskodekryptering er let med Python. Vi vil fokusere på, hvordan man gør dette uden at bruge en ramme. Men ingen bekymringer, det følger den samme proces i rammer, når du først ved, hvordan du gemmer dine brugeres input og læser dem fra databasen.
Installer og opsæt bcrypt
Hvis du ikke allerede har gjort det, aktivere et virtuelt Python-miljø i dit projektrod. Installer derefter bcrypt vha pip:
pip installer bcrpyt
Begynd at kryptere adgangskoder
Når det er installeret, lad os se, hvordan man krypterer en streng ved hjælp af bcrypt:
# Importer bcrypt:
importere bcrypt
password = "min adgangskodestreng"
# Indkode adgangskode til en læsbar utf-8 byte kode:
password = password.encode('utf-8')
# Hash den kodede adgangskode og generer et salt:
hashedPassword = bcrypt.hashpw (adgangskode, bcrypt.gensalt())
print (hashedPassword)
Når du køre Python-koden ovenfor udskriver den en krypteret byte-streng. Outputtet ændres dog hver gang du udfører scriptet. Sådan sikrer bcrypt, at hver bruger har en unikt krypteret adgangskode.
Det er forresten til adgangskodekryptering.
Sådan sammenlignes og bekræftes adgangskoder med bcrypt
Hvad hvis du vil gemme den hash-kodede adgangskode og senere bekræfte, at den matcher en brugers angivne adgangskode under godkendelse?
Det er nemt. Du behøver kun at sammenligne godkendelsesadgangskoden med den, der er gemt i databasen (eller i hukommelsen i dette tilfælde).
Og da bcrypt kun læser byte-strenge, skal du også kode godkendelsesadgangskoden, før du sammenligner den med den i databasen. I det væsentlige krydstjekker du et kodet godkendelsesinput med den kodede hash-kodede adgangskode, der allerede er gemt i din database.
Ved at bruge dummy Python-input, lad os se, hvordan dette fungerer i praksis:
importere bcrypt
#gem din adgangskode:
password = str (input("input password: "))
# Indkode den gemte adgangskode:
password = password.encode('utf-8')
# Krypter den gemte adgangskode:
hashed = bcrypt.hashpw (adgangskode, bcrypt.gensalt (10))
# Opret et indtastningsfelt for godkendelse af adgangskode for at kontrollere, om en bruger indtaster den korrekte adgangskode:
check = str (input("tjek adgangskode: "))
# Kod også godkendelsesadgangskoden:
check = check.encode('utf-8')
# Brug betingelser til at sammenligne godkendelsesadgangskoden med den gemte:
hvis bcrypt.checkpw (check, hashed):
print("login succes")
andet:
print ("forkert adgangskode")
Ovenstående kode beder dig om at indtaste en ny adgangskode, når du udfører den. Python gemmer dette i hukommelsen. Du skal derefter angive den samme adgangskode (kun kendt af dig) i godkendelsesfeltet.
Python udskriver en succesmeddelelse, hvis den sammenlignede adgangskode matcher den tidligere gemte krypterede. Ellers udsender den den mislykkede meddelelse pakket ind i andet udmelding:
Hele konceptet er det samme som at gemme et kodeord i en database under registrering og give det senere under godkendelse.
Skaler kryptering op med bcrypt
Selvom vi kun har demonstreret, hvordan bcrypt fungerer ved at gemme krypterede adgangskoder i almindelig Python-korthukommelse, er dets ultimative brug i virkelige brugerbaserede applikationer.
Ikke desto mindre viser denne tutorial de grundlæggende måder at strukturere din kode på for at opnå dette, selv i virkelige scenarier. For eksempel, hvis du bruger Flask, kan du erstatte input med separate webformularer for at betjene registrerings- og godkendelsesfelterne. Og selvfølgelig gemmer du krypterede adgangskoder i en virkelig database og læser fra den, når du sammenligner adgangskoder.
Alle taler om kryptering, men finder du dig selv fortabt eller forvirret? Her er nogle vigtige krypteringsudtryk, du har brug for at kende.
Læs Næste
- Programmering
- Python
- Programmering
- Sikkerhed
Idowu brænder for alt smart teknologi og produktivitet. I sin fritid leger han med kodning og skifter til skakbrættet, når han keder sig, men han elsker også at bryde ud af rutinen en gang imellem. Hans passion for at vise folk vejen rundt om moderne teknologi motiverer ham til at skrive mere.
Abonner på vores nyhedsbrev
Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!
Klik her for at abonnere