utilities.password_generator
1import streamlit as st 2import string 3from random import choice 4from time import sleep 5 6 7class PasswordGenerator: 8 """ 9 Classe com métodos para a geração de senhas fortes. 10 """ 11 12 def generate_password(self, password_length: int, password_elements: list): 13 """ 14 Gera uma senha de acordo com o tamanho da cadeia de caracteres e complexidade definidas pelo usuário. 15 16 Parameters 17 ---------- 18 password_length : int 19 O comprimento da senha, definido pelo usuário. 20 password_elements : list 21 Os elementos que irão compor a senha, como números, letras maiúsculas e minúsculas e caracteres especiais. 22 23 Returns 24 ------- 25 formatted_password : str 26 A senha gerada de acordo com a seleção do usuário. 27 """ 28 29 formatted_password = '' 30 31 lower_case_alphabet = string.ascii_lowercase 32 lower_case_alphabet_list = [] 33 for i in range(0, len(lower_case_alphabet)): 34 lower_case_alphabet_list.append(lower_case_alphabet[i]) 35 36 upper_case_alphabet = string.ascii_uppercase 37 upper_case_alphabet_list = [] 38 for i in range(0, len(upper_case_alphabet)): 39 upper_case_alphabet_list.append(upper_case_alphabet[i]) 40 41 numbers_list = [] 42 for i in range(0, 10): 43 numbers_list.append(str(i)) 44 45 special_characters_group = string.punctuation 46 special_characters_group_list = [] 47 for i in range(0, len(special_characters_group)): 48 special_characters_group_list.append(special_characters_group[i]) 49 50 for i in range(0, password_length): 51 random_element = "" 52 random_choice = choice(password_elements) 53 if random_choice == "lower_cases": 54 random_element = choice(lower_case_alphabet_list) 55 elif random_choice == "upper_cases": 56 random_element = choice(upper_case_alphabet_list) 57 elif random_choice == "numbers": 58 random_element = choice(numbers_list) 59 elif random_choice == "special_characters": 60 random_element = choice(special_characters_group_list) 61 formatted_password += random_element 62 63 return formatted_password 64 65 def main_menu(self): 66 """ 67 Menu principal. 68 """ 69 70 password_length_options = [] 71 72 for i in range(8, 21): 73 password_length_options.append(i) 74 75 password_elements = { 76 "Letras maiúsculas": "upper_cases", 77 "Letras minúsculas": "lower_cases", 78 "Números": "numbers", 79 "Caracteres especiais": "special_characters" 80 } 81 82 col1, col2 = st.columns(2) 83 84 with col1: 85 with st.expander(label="Opções", expanded=True): 86 selected_password_length = st.select_slider(label="Comprimento da senha", options=password_length_options, help="Comprimento da senha em caracteres.") 87 password_elements_selection = st.multiselect(label="Opções", options=password_elements.keys(), help="Elementos opcionais para a senha. Caso nenhum seja selecionado, serão incluídas letras minúsculas.", placeholder="Selecione uma opção") 88 confirm_options = st.checkbox(label="Confirmar opções") 89 generate_password_button = st.button(label=":key: Gerar senha") 90 91 with col2: 92 data_validation_expander = st.expander(label="Validação dos dados", expanded=True) 93 94 if confirm_options and generate_password_button: 95 with st.spinner(text="Aguarde..."): 96 sleep(2.5) 97 98 password_selected_elements = [] 99 for i in range(0, len(password_elements_selection)): 100 password_selected_elements.append(password_elements[password_elements_selection[i]]) 101 102 generated_password = self.generate_password(password_length=selected_password_length, password_elements=password_selected_elements) 103 104 with data_validation_expander: 105 st.write("Senha gerada:") 106 st.code(generated_password)
class
PasswordGenerator:
8class PasswordGenerator: 9 """ 10 Classe com métodos para a geração de senhas fortes. 11 """ 12 13 def generate_password(self, password_length: int, password_elements: list): 14 """ 15 Gera uma senha de acordo com o tamanho da cadeia de caracteres e complexidade definidas pelo usuário. 16 17 Parameters 18 ---------- 19 password_length : int 20 O comprimento da senha, definido pelo usuário. 21 password_elements : list 22 Os elementos que irão compor a senha, como números, letras maiúsculas e minúsculas e caracteres especiais. 23 24 Returns 25 ------- 26 formatted_password : str 27 A senha gerada de acordo com a seleção do usuário. 28 """ 29 30 formatted_password = '' 31 32 lower_case_alphabet = string.ascii_lowercase 33 lower_case_alphabet_list = [] 34 for i in range(0, len(lower_case_alphabet)): 35 lower_case_alphabet_list.append(lower_case_alphabet[i]) 36 37 upper_case_alphabet = string.ascii_uppercase 38 upper_case_alphabet_list = [] 39 for i in range(0, len(upper_case_alphabet)): 40 upper_case_alphabet_list.append(upper_case_alphabet[i]) 41 42 numbers_list = [] 43 for i in range(0, 10): 44 numbers_list.append(str(i)) 45 46 special_characters_group = string.punctuation 47 special_characters_group_list = [] 48 for i in range(0, len(special_characters_group)): 49 special_characters_group_list.append(special_characters_group[i]) 50 51 for i in range(0, password_length): 52 random_element = "" 53 random_choice = choice(password_elements) 54 if random_choice == "lower_cases": 55 random_element = choice(lower_case_alphabet_list) 56 elif random_choice == "upper_cases": 57 random_element = choice(upper_case_alphabet_list) 58 elif random_choice == "numbers": 59 random_element = choice(numbers_list) 60 elif random_choice == "special_characters": 61 random_element = choice(special_characters_group_list) 62 formatted_password += random_element 63 64 return formatted_password 65 66 def main_menu(self): 67 """ 68 Menu principal. 69 """ 70 71 password_length_options = [] 72 73 for i in range(8, 21): 74 password_length_options.append(i) 75 76 password_elements = { 77 "Letras maiúsculas": "upper_cases", 78 "Letras minúsculas": "lower_cases", 79 "Números": "numbers", 80 "Caracteres especiais": "special_characters" 81 } 82 83 col1, col2 = st.columns(2) 84 85 with col1: 86 with st.expander(label="Opções", expanded=True): 87 selected_password_length = st.select_slider(label="Comprimento da senha", options=password_length_options, help="Comprimento da senha em caracteres.") 88 password_elements_selection = st.multiselect(label="Opções", options=password_elements.keys(), help="Elementos opcionais para a senha. Caso nenhum seja selecionado, serão incluídas letras minúsculas.", placeholder="Selecione uma opção") 89 confirm_options = st.checkbox(label="Confirmar opções") 90 generate_password_button = st.button(label=":key: Gerar senha") 91 92 with col2: 93 data_validation_expander = st.expander(label="Validação dos dados", expanded=True) 94 95 if confirm_options and generate_password_button: 96 with st.spinner(text="Aguarde..."): 97 sleep(2.5) 98 99 password_selected_elements = [] 100 for i in range(0, len(password_elements_selection)): 101 password_selected_elements.append(password_elements[password_elements_selection[i]]) 102 103 generated_password = self.generate_password(password_length=selected_password_length, password_elements=password_selected_elements) 104 105 with data_validation_expander: 106 st.write("Senha gerada:") 107 st.code(generated_password)
Classe com métodos para a geração de senhas fortes.
def
generate_password(self, password_length: int, password_elements: list):
13 def generate_password(self, password_length: int, password_elements: list): 14 """ 15 Gera uma senha de acordo com o tamanho da cadeia de caracteres e complexidade definidas pelo usuário. 16 17 Parameters 18 ---------- 19 password_length : int 20 O comprimento da senha, definido pelo usuário. 21 password_elements : list 22 Os elementos que irão compor a senha, como números, letras maiúsculas e minúsculas e caracteres especiais. 23 24 Returns 25 ------- 26 formatted_password : str 27 A senha gerada de acordo com a seleção do usuário. 28 """ 29 30 formatted_password = '' 31 32 lower_case_alphabet = string.ascii_lowercase 33 lower_case_alphabet_list = [] 34 for i in range(0, len(lower_case_alphabet)): 35 lower_case_alphabet_list.append(lower_case_alphabet[i]) 36 37 upper_case_alphabet = string.ascii_uppercase 38 upper_case_alphabet_list = [] 39 for i in range(0, len(upper_case_alphabet)): 40 upper_case_alphabet_list.append(upper_case_alphabet[i]) 41 42 numbers_list = [] 43 for i in range(0, 10): 44 numbers_list.append(str(i)) 45 46 special_characters_group = string.punctuation 47 special_characters_group_list = [] 48 for i in range(0, len(special_characters_group)): 49 special_characters_group_list.append(special_characters_group[i]) 50 51 for i in range(0, password_length): 52 random_element = "" 53 random_choice = choice(password_elements) 54 if random_choice == "lower_cases": 55 random_element = choice(lower_case_alphabet_list) 56 elif random_choice == "upper_cases": 57 random_element = choice(upper_case_alphabet_list) 58 elif random_choice == "numbers": 59 random_element = choice(numbers_list) 60 elif random_choice == "special_characters": 61 random_element = choice(special_characters_group_list) 62 formatted_password += random_element 63 64 return formatted_password
Gera uma senha de acordo com o tamanho da cadeia de caracteres e complexidade definidas pelo usuário.
Parameters
- password_length (int): O comprimento da senha, definido pelo usuário.
- password_elements (list): Os elementos que irão compor a senha, como números, letras maiúsculas e minúsculas e caracteres especiais.
Returns
- formatted_password (str): A senha gerada de acordo com a seleção do usuário.