Jak stworzyć generator losowych haseł w Pythonie?

Bezpieczeństwo to jedna z najważniejszych części naszego życia. Znaczenie bezpieczeństwa rośnie z dnia na dzień, ponieważ większość rzeczy przechodzi do Internetu. Hasła wychodzą na jaw, gdy mówimy o bezpieczeństwie.

W tym artykule stworzymy generator haseł, który pomoże nam szybko generować losowe i silne hasła.

Dlaczego potrzebujemy generatora haseł?

Ponieważ nie możemy od razu wymyślić różnych wzorów haseł.

Ale inaczej jest z komputerami. Komputery mogą generować losowe i silne hasła w oparciu o nasze dostosowania w ciągu kilku sekund. Dostępnych jest wiele generatorów haseł.

Czy możemy stworzyć własne z dostosowaniami, które nam się podobają?

Tak, na pewno możemy je stworzyć. A tutaj pokażemy, jak to zrobić.

Stwórzmy generator haseł.

Generator haseł 💻

Najlepszą rzeczą w tworzeniu własnego generatora haseł jest to, że możemy go dostosować do własnych potrzeb.

Najpierw utworzymy generator haseł, który pyta o długość hasła i generuje losowe hasło zawierające cyfry, litery i znaki specjalne.

Następnie ulepszymy go, pytając o liczbę każdego rodzaju znaku, na przykład liczbę cyfr, alfabetów i znaków specjalnych.

Tak więc bez dalszych ceregieli zobaczmy, jak stworzyć generator haseł za pomocą Pythona.

Kroki

  • Zapisz wszystkie znaki jako listę. Możemy użyć modułu string Pythona lub wpisać je wszystkie.
  • Poproś użytkownika o wprowadzenie długości hasła.
  • Potasuj znaki za pomocą metody random.shuffle.
  • Zainicjuj pustą listę, aby przechowywać hasło.
  • Napisz pętlę, która iteruje czasy długości.
    • Wybierz losową postać spośród wszystkich znaków za pomocą metody random.choice.
    • Dołącz losowy znak do hasła.
  • Potasuj wynikową listę haseł, aby była bardziej losowa.
  • Przekształć listę haseł w ciąg znaków za pomocą metody join.
  • Wydrukuj hasło.

Wykonaj powyższe kroki i spróbuj napisać kod. Nie martw się, nawet jeśli nie jesteś w stanie napisać kodu. Sprawdź poniższy kod.

Kod

import string
import random


## characters to generate password from
characters = list(string.ascii_letters + string.digits + "[email protected]#$%^&*()")

def generate_random_password():
	## length of password from the user
	length = int(input("Enter password length: "))

	## shuffling the characters
	random.shuffle(characters)
	
	## picking random characters from the list
	password = []
	for i in range(length):
		password.append(random.choice(characters))

	## shuffling the resultant password
	random.shuffle(password)

	## converting the list to string
	## printing the list
	print("".join(password))



## invoking the function
generate_random_password()

Powyższy kod nie wymaga wyjaśnień. Właśnie wykonaliśmy opisane kroki, aby napisać kod. Tak więc nie znajdziesz żadnego problemu ze zrozumieniem kodu, jeśli przeczytasz kroki.

Teraz uruchom kod i wygeneruj hasło. Przykładowe dane wyjściowe będą następujące.

Enter password length: 10
d&amIzK%d)

Przestrzegaj hasła w powyższym wyjściu. Czy jest jakaś cyfra? Nie. Ponieważ nie ma gwarancji, że program będzie zawierał cyfry.

Następnie staramy się zagwarantować, że program będzie zawierał cyfry i znaki specjalne, prosząc użytkownika o wprowadzenie żądanej liczby cyfr, alfabetów i znaków specjalnych.

Gdy użytkownik wprowadzi liczbę znaków dla każdego typu, program włączy do hasła odpowiednią liczbę rodzajów znaków.

Zobaczmy kod, który akceptuje liczbę znaków dla każdego typu i generuje hasło.

import string
import random


## characters to generate password from
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():
	## length of password from the user
	length = int(input("Enter password length: "))

	## number of character types
	alphabets_count = int(input("Enter alphabets count in password: "))
	digits_count = int(input("Enter digits count in password: "))
	special_characters_count = int(input("Enter special characters count in password: "))

	characters_count = alphabets_count + digits_count + special_characters_count

	## check the total length with characters sum count
	## print not valid if the sum is greater than length
	if characters_count > length:
		print("Characters total count is greater than the password length")
		return


	## initializing the password
	password = []
	
	## picking random alphabets
	for i in range(alphabets_count):
		password.append(random.choice(alphabets))


	## picking random digits
	for i in range(digits_count):
		password.append(random.choice(digits))


	## picking random alphabets
	for i in range(special_characters_count):
		password.append(random.choice(special_characters))


	## if the total characters count is less than the password length
	## add random characters to make it equal to the length
	if characters_count < length:
		random.shuffle(characters)
		for i in range(length - characters_count):
			password.append(random.choice(characters))


	## shuffling the resultant password
	random.shuffle(password)

	## converting the list to string
	## printing the list
	print("".join(password))



## invoking the function
generate_random_password()

Jaka jest więc różnica między poprzednim kodem a tym kodem?

  • Napisaliśmy osobne pętle dla każdego typu znaku, aby dodać je do hasła.
  • Istnieją dwa warunkowe sprawdzenia sprawdzające całkowitą liczbę znaków z długością hasła.

Dodaliśmy dodatkowy kod. Ale wzorzec jest podobny do poprzedniego kodu. Więc nie będziesz miał trudności ze zrozumieniem tego.

Teraz nadszedł czas na wykonanie i sprawdzenie danych wyjściowych. Spójrz na następujący przebieg testowy.

Enter password length: 10
Enter alphabets count in password: 3
Enter digits count in password: 2
Enter special characters count in password: 3
V2(&#XlQq1

Jeśli zobaczysz wygenerowane tym razem hasło, ma ono minimalną liczbę znaków, jakiej chce użytkownik. A program zawiera jeszcze 2 losowe znaki, aby długość hasła była równa długości wprowadzonej przez użytkownika.

Hurra! mamy kompletny generator silnych haseł.

Wniosek

Widzieliśmy, jak stworzyć generator haseł od podstaw. Czy możemy dodać do niego więcej funkcji? Tak, możemy dodać tyle, ile chcemy. Ale upewnij się, że wynikowe hasło jest wystarczająco silne.

Wygeneruj hasła z kodu i użyj ich na następnym koncie online.

W tym czasie użyj generatora losowych haseł newsblog.pl, aby utworzyć bezpieczne hasła.

Dowiedz się, jak pisać równe lub nierówne kodowi i jak zbudować grę w kółko i krzyżyk w Pythonie.

Udanego kodowania! 👩‍💻