Slaptažodžių šifravimas užmaskuoja vartotojų slaptažodžius, todėl juos sunku atspėti ar iššifruoti. Tai esminis žingsnis kuriant saugią vartotojų bazinę programinę įrangą. Nesvarbu, ar kuriate jį naudodami „Flask“, ar kitą lengvą „Python Framework“, negalite ignoruoti šio žingsnio. Čia atsiranda bcrypt.

Parodysime, kaip naudoti „bcrypt“ slaptažodžiui maišyti „Python“.

Kaip veikia bcrypt

„Bcrypt“ yra kalbų agnostinė maišos biblioteka, siūlanti unikalų slaptažodžio šifravimą. Šifruodama jūsų eilutę, pagal numatytuosius nustatymus ji generuoja papildomų atsitiktinių simbolių (druskos), kad padidintų jūsų slaptažodžio saugumą.

Pasirinktinai taip pat galite nurodyti papildomų simbolių, kuriuos norite pridėti prie gaunamos eilutės, skaičių.

Thebcrypt biblioteka neskaito neapdorotų eilučių – tik baitų kodą. Taigi, norėdami pradėti, pirmiausia užkoduosite gaunamo slaptažodžio eilutę, prieš perduodant ją užšifravimui.

Kodavimas nėra tas pats, kas šifravimas. Tai tik užtikrina, kad eilutė taptų mašininiu būdu nuskaitoma prieš šifravimo algoritmui galint ją užmaskuoti.

instagram viewer

Slaptažodžio šifravimas Python naudojant bcrypt

bcrypt slaptažodžio šifravimas yra lengvas naudojant Python. Mes sutelksime dėmesį į tai, kaip tai padaryti nenaudojant sistemos. Tačiau nesijaudinkite, jis atlieka tą patį procesą sistemose, kai žinote, kaip saugoti naudotojų įvestis ir nuskaityti juos iš duomenų bazės.

Įdiekite ir nustatykite bcrypt

Jei to dar nepadarėte, suaktyvinti Python virtualią aplinką savo projekto šaknyje. Tada įdiekite „bcrypt“ naudodami pip:

pip įdiegti bcrpyt

Pradėkite slaptažodžių šifravimą

Įdiegę pažiūrėkime, kaip užšifruoti eilutę naudojant bcrypt:

# Importuoti bcrypt:
importuoti bcrypt
slaptažodis = "mano slaptažodžio eilutė"
# Užkoduokite slaptažodį į skaitomą utf-8 baitų kodą:
slaptažodis = slaptažodis.encode('utf-8')
# Sukurkite koduotą slaptažodį ir sugeneruokite druską:
hashedPassword = bcrypt.hashpw (slaptažodis, bcrypt.gensalt())
spausdinti (slaptažodis maišytas)

Kada tu paleiskite Python kodą aukščiau, jis išspausdina užšifruotą baitų eilutę. Tačiau išvestis keičiasi kiekvieną kartą, kai vykdote scenarijų. Taip bcrypt užtikrina, kad kiekvienas vartotojas turėtų unikalų užšifruotą slaptažodį.

Tai, beje, skirta slaptažodžio šifravimui.

Kaip palyginti ir patvirtinti slaptažodžius su bcrypt

Ką daryti, jei norite išsaugoti maišos slaptažodį ir vėliau patvirtinti, kad jis sutampa su vartotojo pateiktu slaptažodžiu autentifikavimo metu?

Tai lengva. Jums tereikia palyginti autentifikavimo slaptažodį su saugomu duomenų bazėje (arba šiuo atveju atmintyje).

Kadangi „bcrypt“ skaito tik baitų eilutes, prieš palygindami jį su duomenų bazėje esančiu slaptažodžiu taip pat turėsite užkoduoti autentifikavimo slaptažodį. Iš esmės jūs patikrinsite užkoduotą autentifikavimo įvestį su koduotu maišos slaptažodžiu, jau saugomu jūsų duomenų bazėje.

Naudodami netikrus Python įvestis, pažiūrėkime, kaip tai veikia praktiškai:

importuoti bcrypt
#išsaugokite slaptažodį:
slaptažodis = str (input("įvesti slaptažodį: "))
# Užkoduokite išsaugotą slaptažodį:
slaptažodis = slaptažodis.encode('utf-8')
# Užšifruokite saugomą slaptažodį:
maiša = bcrypt.hashpw (slaptažodis, bcrypt.gensalt (10))
# Sukurkite autentifikavimo slaptažodžio įvesties lauką, kad patikrintumėte, ar vartotojas įvedė teisingą slaptažodį:
check = str (input("patikrinti slaptažodį: "))
# Užkoduokite ir autentifikavimo slaptažodį:
check = check.encode('utf-8')
# Naudokite sąlygas, kad palygintumėte autentifikavimo slaptažodį su išsaugotu:
jei bcrypt.checkpw (tikrinti, maišyti):
print ("sėkmingas prisijungimas")
Kitas:
print ("neteisingas slaptažodis")

Pirmiau pateiktame kode prašoma įvesti naują slaptažodį, kai jį vykdote. Python išsaugo tai atmintyje. Tada autentifikavimo lauke nurodysite tą patį slaptažodį (žinomą tik jums).

Python išspausdina sėkmės pranešimą, jei lyginamas slaptažodis sutampa su anksčiau išsaugotu užšifruotu slaptažodžiu. Priešingu atveju jis išveda nesėkmingą pranešimą, supakuotą į Kitas pareiškimas:

Visa koncepcija yra tokia pati, kaip saugoti slaptažodį duomenų bazėje registracijos metu ir pateikti vėliau autentifikavimo metu.

Padidinti šifravimą su bcrypt

Nors mes tik pademonstravome, kaip veikia bcrypt, saugodami užšifruotus slaptažodžius į paprastą Python trumpąją atmintį, jos panaudojimas yra skirtas realiose vartotojų bazėse.

Nepaisant to, ši pamoka parodo pagrindinius būdus, kaip susisteminti kodą, kad tai būtų pasiekta net ir realiame gyvenime. Pavyzdžiui, jei naudojate „Flask“, galite pakeisti įvestis atskiromis žiniatinklio formomis, kad būtų pateikti registracijos ir autentifikavimo laukai. Ir, žinoma, užšifruotus slaptažodžius saugosite tikroje duomenų bazėje ir skaitysite iš jos lygindami slaptažodžius.

12 pagrindinių šifravimo terminų, kuriuos dabar turėtų žinoti visi

Visi kalba apie šifravimą, bet pasimetėte ar susipainiojate? Štai keletas pagrindinių šifravimo terminų, kuriuos turite žinoti.

Skaitykite toliau

DalintisTviteryjeEl. paštas
Susijusios temos
  • Programavimas
  • Python
  • Programavimas
  • Saugumas
Apie autorių
Idowu Omisola (116 straipsnių paskelbta)

Idowu aistringai vertina viską, kas yra išmanioji technologija ir produktyvumas. Laisvalaikiu jis žaidžia koduodamas ir, kai jam nuobodu, pereina prie šachmatų lentos, bet taip pat mėgsta retkarčiais atitrūkti nuo rutinos. Jo aistra parodyti žmonėms kelią apie šiuolaikines technologijas skatina jį rašyti daugiau.

Daugiau iš Idowu Omisola

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia