Innholdsfortegnelse[Gjemme seg][Forestilling]
Du må aldri beholde et passord i klartekst mens du bekrefter en bruker eller gjør noe lignende.
Siden mange enkeltpersoner bruker det samme passordet, hvis en angriper oppdager en database med ukrypterte passord, kan de enkelt brukes sammen med matchende e-poster for å gå inn på den koblede nettsiden eller kontoen og til og med brukes til å prøve å få tilgang til andre kontoer.
Passord hashes ofte i dag når et passord oppgis. Det anbefales å hash med salt og oppbevare saltet sammen med det hashed passordet.
Salting kan virke som et av trinnene i en oppskrift for hash browns, men i kryptografi refererer det til å legge til tilfeldige data til en hash-funksjons input for å sikre at hashen alltid vil gi et unikt resultat selv om inngangene er identiske.
Som et resultat kan den særegne hasjen som lages ved å tilsette saltet forsvare oss mot flere angrepsmetoder, inkludert hasjtabellangrep, mens den kveler ordbok og brute-force offline-forsøk.
Her, ved hjelp av kodebiter, vil vi demonstrere hvordan du bruker 'bcrypt' for å sikre passordene dine.
Så, hva er 'bcrypt'?
Bcrypt er et hashing-bibliotek som støtter flere språk og gir spesiell passordkryptering. For å øke sikkerheten til passordet ditt, produserer det automatisk flere tilfeldige tegn (salt) når du krypterer strengen din.
Du kan også velge å definere hvor mange ekstra tegn du ønsker å legge til en innkommende streng.
Bcrypt-biblioteket leser bare bytekode, ikke råstrenger. Derfor, før du sender inn en innkommende passordstreng til bcrypt for kryptering, må du først kode den.
Kryptering og koding er ikke de samme tingene. Den sørger bare for at en streng er maskinlesbar før den dekkes av en krypteringsteknikk.
Bruke bcrypt for å kryptere et passord i Python
Python gjør bcrypt passordkryptering enkel. Vi vil konsentrere oss om å gjøre dette uten hjelp av et rammeverk. Men ikke bekymre deg, hvis du forstår hvordan du lagrer brukerinndata og leser dem fra databasen, er prosedyren den samme i rammeverk.
Installasjon
Du trenger bare å sette opp et Python-virtuelt miljø og deretter bruke en IDE som PyCharm. Biblioteket må da installeres først:
Krypterer passord
La oss se hvordan du bruker bcrypt for å kryptere en tekst etter at den er installert:
Den nevnte Python-koden kjører og sender ut en kryptert bytestreng. Men hver gang du kjører skriptet, er resultatet annerledes. Bcrypt bruker denne metoden for å sikre at hver bruker har et passord som er spesifikt kryptert.
Det er forresten for passordkryptering.
Passordsammenligning og bekreftelse ved hjelp av Bcrypt
Hva skjer hvis du ønsker å lagre det hash-kodede passordet og senere sjekke om det samsvarer med passordet en bruker har sendt inn for autentisering?
Det er enkelt. Bare autentiseringspassordet må sammenlignes med databasens oppføring (eller i minnet i dette tilfellet).
Autentiseringspassordet må også kodes før det sammenlignes med det i databasen fordi bcrypt bare kan lese byte-strenger. I utgangspunktet vil du sammenligne en kodet autentiseringsinngang med det kodede hash-passordet du har i databasen din.
La oss teste dette ut ved å bruke fiktive Python-innganger:
Når du kjører den nevnte koden, blir du bedt om et nytt passord. Dette er lagret i minnet av Python. I autentiseringsdelen vil du deretter skrive inn det samme passordet, som er privat for deg.
Hvis passordet sammenlignes og det som tidligere var kryptert og lagret kampen, sender Python ut en suksessmelding.
Hvis ikke, skrives feilmeldingen ut og deretter legges den andre setningen til.
Den grunnleggende ideen er identisk med den med å registrere og deretter levere et passord til en database for autentisering.
konklusjonen
Selv om vi ganske enkelt har brukt krypterte passord for å vise hvordan bcrypt fungerer i vanlig Python-kortminne, ligger dens faktiske anvendelighet i brukerbaserte apper.
Ikke desto mindre viser denne artikkelen de essensielle metodene for å organisere koden din for å oppnå dette, selv i virkelige omstendigheter.
Hvis du for eksempel bruker Flask, kan du gi registrerings- og autentiseringsfeltene via separate nettskjemaer i stedet for inndata.
Mens du sammenligner passord, vil du selvfølgelig lese fra en database som inneholder krypterte passord som oppbevares i den virkelige verden.
Jona Nitsch
Takk for denne enkle og enkle forklaringen,
Dette hjalp meg mye i mitt nåværende prosjekt.
Jeg synes det er veldig bra at eksempelkoden er begrenset til et minimum og ikke overbelastet som så mange andre forklaringer.
Med vennlig hilsen