Bezpečnost je jednou z nejdůležitějších součástí našeho života. Důležitost zabezpečení se každým dnem zvyšuje, protože většina věcí jde online. Hesla vycházejí najevo, když mluvíme o bezpečnosti.
V tomto článku vytvoříme generátor hesel, který nám pomůže rychle generovat náhodná a silná hesla.
Proč potřebujeme generátor hesel?
Protože nemůžeme okamžitě myslet na různé vzory hesel.
Ale to není stejný případ s počítači. Počítače mohou generovat náhodná a silná hesla na základě našich přizpůsobení během několika sekund. K dispozici je mnoho generátorů hesel.
Můžeme si vytvořit vlastní s přizpůsobením, které se nám líbí?
Ano, určitě ho můžeme vytvořit. A zde vám ukážeme, jak na to.
Vytvoříme generátor hesel.
Table of Contents
Generátor hesel 💻
Nejlepší na vytvoření vlastního generátoru hesel je to, že si jej můžeme přizpůsobit, jak chceme.
Nejprve vytvoříme generátor hesel, který se zeptá na délku hesla a vygeneruje náhodné heslo obsahující číslice, abecedy a speciální znaky.
Dále jej vylepšíme tak, že se zeptáme na počet jednotlivých typů znaků, jako je počet číslic, abeced a speciálních znaků.
Pojďme se tedy bez dalších okolků podívat na kroky k vytvoření generátoru hesel pomocí Pythonu.
Kroky
- Uložte všechny znaky jako seznam. Můžeme použít modul string v Pythonu nebo je napsat všechny.
- Požádejte uživatele o zadání délky hesla.
- Zamíchejte znaky pomocí metody random.shuffle.
- Inicializujte prázdný seznam pro uložení hesla.
- Napište smyčku, která iteruje délkové časy.
- Vyberte náhodný znak ze všech znaků pomocí metody random.choice.
- Přidejte k heslu náhodný znak.
- Zamíchejte výsledný seznam hesel, aby byl náhodnější.
- Převeďte seznam hesel na řetězec pomocí metody spojení.
- Vytiskněte heslo.
Postupujte podle výše uvedených kroků a zkuste napsat kód. Nebojte se, i když nejste schopni napsat kód. Podívejte se na kód níže.
Kód
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()
Výše uvedený kód je samovysvětlující. Právě jsme provedli kroky popsané při psaní kódu. Takže pokud si přečtete kroky, nenajdete žádný problém s pochopením kódu.
Nyní spusťte kód a vygenerujte heslo. Příklad výstupu bude následující.
Enter password length: 10 d&amIzK%d)
Dodržujte heslo ve výše uvedeném výstupu. Je tam nějaká číslice? Ne. Protože neexistuje žádná záruka, že program bude obsahovat číslice.
Dále se snažíme zaručit, že program bude obsahovat číslice a speciální znaky tím, že požádáme uživatele, aby zadal požadovaný počet číslic, abeced a speciálních znaků.
Když uživatel zadá počet znaků pro každý typ, program zahrne příslušný počet typů znaků do hesla.
Podívejme se na kód, který přijímá počet znaků pro každý typ a generuje heslo.
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()
Jaký je tedy rozdíl mezi předchozím kódem a tímto kódem?
- Pro každý typ znaku jsme napsali samostatné smyčky, abychom je přidali k heslu.
- Existují dvě podmíněné kontroly pro ověření celkového počtu znaků s délkou hesla.
Přidali jsme další kód. Vzor je však podobný předchozímu kódu. Takže s jeho pochopením nebudete mít žádné potíže.
Nyní je čas provést a zkontrolovat výstup. Podívejte se na následující zkušební provoz.
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
Pokud vidíte heslo vygenerované tentokrát, má minimální počet znaků, který uživatel chce. A program obsahuje další 2 náhodné znaky, aby se délka hesla rovnala zadání uživatele.
Hurá! máme kompletní generátor silných hesel. 😎
Závěr
Viděli jsme, jak vytvořit generátor hesel od začátku. Můžeme k tomu přidat další funkce? Ano, můžeme přidat kolik chceme. Ujistěte se však, že výsledné heslo je dostatečně silné.
Vygenerujte si hesla z kódu a použijte je pro svůj další online účet.
Zatímco to uděláte, použijte etechblog.cz generátor náhodných hesel k vytvoření bezpečných hesel.
Naučte se psát stejné nebo nerovné kódu a jak vytvořit tic-tac-toe hru v Pythonu.
Šťastné kódování! 👩💻