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.
def main_menu(self):
 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)

Menu principal.