Како направити насумични генератор лозинки у Питхон-у

Преглед садржаја

Sigurnost predstavlja ključni aspekt naših života. Njena važnost neprestano raste, pogotovo imajući u vidu da se sve veći broj aktivnosti obavlja online. Kada govorimo o sigurnosti, lozinke zauzimaju centralno mesto.

U ovom tekstu, fokusiraćemo se na kreiranje generatora lozinki. Ovaj alat će nam omogućiti da brzo stvaramo nasumične i snažne lozinke.

Zašto nam je potreban generator lozinki?

Jednostavno, ljudski mozak ne može tako lako smisliti raznolike i kompleksne obrasce za lozinke.

Međutim, računari su u tome izuzetno efikasni. Oni mogu generisati slučajne i jake lozinke, uzimajući u obzir naše specifikacije, i to za samo nekoliko sekundi. Danas postoji veliki broj generatora lozinki.

Ali, možemo li napraviti sopstveni, koji bi bio prilagođen našim potrebama?

Naravno, to je potpuno izvodljivo! Pokazaćemo vam kako to možete ostvariti.

Započnimo sa kreiranjem generatora lozinki.

Generator lozinki 💻

Najbolja stvar kod pravljenja sopstvenog generatora lozinki je to što ga možemo oblikovati prema ličnim željama.

Prvo ćemo konstruisati generator koji traži dužinu lozinke i zatim generiše nasumičnu lozinku sa brojevima, slovima i specijalnim simbolima.

Zatim ćemo ga unaprediti, tako da pita korisnika za broj svakog tipa karaktera, tj. koliko brojeva, slova i specijalnih simbola želi da koristi.

Bez daljeg odlaganja, krenimo na korake za pravljenje generatora lozinki uz pomoć Python-a.

Koraci

  • Sve moguće karaktere sačuvajte u listu. Možemo koristiti string modul Python-a ili ih ručno uneti.
  • Zatražite od korisnika da unese željenu dužinu lozinke.
  • Izmešajte karaktere koristeći metodu random.shuffle.
  • Inicijalizujte praznu listu za čuvanje lozinke.
  • Napravite petlju koja se ponavlja onoliko puta koliko iznosi dužina lozinke.
    • Izaberite nasumični karakter iz liste svih karaktera koristeći random.choice.
    • Dodajte taj nasumični karakter u listu lozinki.
  • Izmešajte dobijenu listu lozinki kako biste je učinili još nasumičnijom.
  • Pretvorite listu lozinki u string pomoću metode join.
  • Odštampajte generisanu lozinku.

Pratite ove korake i pokušajte da napišete kod. Ne brinite ako vam to ne pođe za rukom. Pogledajte kod koji smo pripremili.

Kod

import string
import random

## Karakteri od kojih se generiše lozinka
characters = list(string.ascii_letters + string.digits + "[email protected]#$%^&*()")

def generate_random_password():
  ## Dužina lozinke koju unosi korisnik
  length = int(input("Unesite dužinu lozinke: "))

  ## Mešanje karaktera
  random.shuffle(characters)
  
  ## Biranje nasumičnih karaktera sa liste
  password = []
  for i in range(length):
    password.append(random.choice(characters))

  ## Mešanje dobijene lozinke
  random.shuffle(password)

  ## Pretvaranje liste u string
  ## Štampanje lozinke
  print("".join(password))

## Pozivanje funkcije
generate_random_password()
  

Gornji kod je prilično jednostavan za razumevanje. Samo smo pratili korake koje smo opisali. Zbog toga ne biste trebali imati problema sa razumevanjem koda ako ste pročitali uputstva.

Sada pokrenite kod i generišite lozinku. Primer izlaznog rezultata je sledeći:

Unesite dužinu lozinke: 10
d&amIzK%d)
  

Obratite pažnju na lozinku u primeru. Da li ima brojeva? Ne. Razlog je taj što program ne garantuje da će uključiti brojeve.

Stoga, pokušavamo da garantujemo da će program uključiti brojeve i specijalne simbole, tako što ćemo od korisnika tražiti da unese broj brojeva, slova i specijalnih simbola koje želi.

Kada korisnik unese broj karaktera za svaki tip, program će uključiti odgovarajući broj karaktera svakog tipa u lozinku.

Pogledajmo sada kod koji prihvata broj karaktera za svaki tip i generiše lozinku.

import string
import random

## Karakteri od kojih se generiše lozinka
alphabets = list(string.ascii_letters)
digits = list(string.digits)
special_characters = list("[email protected]#$%^&*()")
characters = list(string.ascii_letters + string.digits + "[email protected]#$%^&*()")

def generate_random_password():
  ## Dužina lozinke koju unosi korisnik
  length = int(input("Unesite dužinu lozinke: "))

  ## Broj karaktera svakog tipa
  alphabets_count = int(input("Unesite broj slova u lozinci: "))
  digits_count = int(input("Unesite broj brojeva u lozinci: "))
  special_characters_count = int(input("Unesite broj specijalnih simbola u lozinci: "))

  characters_count = alphabets_count + digits_count + special_characters_count

  ## Provera da li je ukupan broj karaktera veći od dužine lozinke
  ## Ispisuje poruku da je unos nevalidan ako je suma veća od dužine
  if characters_count > length:
    print("Ukupan broj karaktera je veći od dužine lozinke")
    return

  ## Inicijalizacija lozinke
  password = []
  
  ## Biranje nasumičnih slova
  for i in range(alphabets_count):
    password.append(random.choice(alphabets))

  ## Biranje nasumičnih brojeva
  for i in range(digits_count):
    password.append(random.choice(digits))

  ## Biranje nasumičnih specijalnih simbola
  for i in range(special_characters_count):
    password.append(random.choice(special_characters))

  ## Ako je ukupan broj karaktera manji od dužine lozinke
  ## Dodaj nasumične karaktere kako bi se dužina poklopila
  if characters_count < length:
    random.shuffle(characters)
    for i in range(length - characters_count):
      password.append(random.choice(characters))

  ## Mešanje dobijene lozinke
  random.shuffle(password)

  ## Pretvaranje liste u string
  ## Štampanje lozinke
  print("".join(password))

## Pozivanje funkcije
generate_random_password()
  

Koja je razlika između prethodnog i ovog koda?

  • Napisali smo posebne petlje za svaki tip karaktera da bismo ih dodali lozinci.
  • Postoje dve provere uslova da bismo proverili ukupan broj karaktera u odnosu na dužinu lozinke.

Dodali smo još koda. Ali, struktura je slična prethodnom kodu. Zato ne biste trebali imati nikakvih problema sa razumevanjem.

Sada je vreme da pokrenete kod i proverite izlaz. Pogledajte sledeći primer.

Unesite dužinu lozinke: 10
Unesite broj slova u lozinci: 3
Unesite broj brojeva u lozinci: 2
Unesite broj specijalnih simbola u lozinci: 3
V2(&#XlQq1
  

Ako pogledate lozinku koja je generisana sada, ona ima minimalni broj karaktera koji je korisnik zadao. Program je dodao još 2 nasumična karaktera da bi dužina lozinke bila jednaka korisničkom unosu.

Ura! Sada imamo kompletan generator snažnih lozinki. 😎

Zaključak

Videli smo kako da kreiramo generator lozinki od početka. Možemo li mu dodati još funkcionalnosti? Naravno, možemo dodati onoliko koliko želimo. Ali, pobrinite se da generisana lozinka bude dovoljno jaka.

Generišite lozinke pomoću ovog koda i koristite ih za svoje online naloge.

U međuvremenu, isprobajte vdsvds Generator nasumičnih lozinki za kreiranje sigurnih lozinki.

Naučite kako da napišete kod za proveru jednakosti i nejednakosti i kako da napravite igru iks-oks u Python-u.

Srećno kodiranje! 👩‍💻