Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

O módulo Base64 do Python é uma ferramenta poderosa para codificar e decodificar mensagens. Você pode usá-lo para enviar dados com segurança pela Internet. É um procedimento padrão para sites, aplicativos e serviços de comunicação usar esse tipo de codificação para proteger dados confidenciais de hackers hostis.

O módulo Base64 possui um par de funções que você pode usar para codificar e decodificar mensagens, adicionando segurança extra às suas transferências de dados.

O Módulo Tkinter e Base64

Tkinter permite que você crie aplicativos de desktop. Ele oferece uma variedade de widgets como botões, rótulos e caixas de texto que facilitam o desenvolvimento de aplicativos sem muito esforço. Você pode criar programas GUI incríveis com o Tkinter. você pode construir uma calculadora simples, um aplicativo de lista de tarefas ou um jogo de teste de digitação. Para instalar o Tkinter em seu sistema, abra seu terminal e digite:

pip instalar tkinter

BASE64 fornece funções para codificar dados binários para decodificá-los em ASCII de volta para binário. Ele suporta codificação padrão e segura de URL, o que torna a transmissão de informações mais segura. Para converter uma string em um caractere Base64, obtenha o valor ASCII de cada caractere e calcule seu binário de 8 bits. Converta esse pedaço de 6 bits reagrupando os dígitos e reconvertendo-os em seus respectivos valores decimais. Finalmente, use a tabela de codificação Base64 para obter os valores Base64 para cada decimal.

Como codificar e decodificar mensagens em Python

Você pode encontrar o código-fonte deste projeto em seu Repositório GitHub.

Comece importando os dois módulos. Inicialize a instância do Tkinter e exiba a janela raiz. Defina o título, as dimensões em pixels e a cor de fundo da janela.

de tkinter importar *
importar base64

raiz = Tk()
raiz.geometria('750x400')
root.configure (background='aqua')
root.title("Codificar e decodificar mensagens usando Python")

Use os widgets Label para exibir informações úteis sobre o aplicativo. O rótulo aceita uma janela pai na qual você deseja colocá-lo, o texto que ele deve exibir e o estilo da fonte, a cor e a cor do plano de fundo. Usar pacote() para organizar o widget em um bloco de layout antes de colocá-lo no widget pai. StringVar torna mais fácil controlar o valor de um widget como um Label ou Entry.

Rótulo (raiz, texto='Codificador e Decodificador de Mensagem Python', fonte='arial 25 negrito', fg ='branco', bg ="roxo").pacote()
Texto = StringVar()
chave = StringVar()
modo = StringVar()
Resultado = StringVar()

Definir uma função Codificar() que aceita uma chave para codificar e decodificar junto com a mensagem. Defina uma lista vazia e itere até o comprimento da mensagem. Defina o índice da chave como o módulo da operação e armazene seu valor na variável key_c. Usar ord() para obter o valor Unicode do caractere e usar chr() para obter o caractere que representa o valor especificado.

Anexe esse valor à lista. Junte cada elemento da lista com uma string vazia e use o codificar() para retornar uma versão codificada em utf-8 da string. O base64.urlsafe_b64encode() O método codifica essa entrada e substitui - por + e _ por /.

defCodificar(mensagem chave):
enc = []

para eu em intervalo (len (mensagem)):
key_c = key[i % len (key)]
enc.append (chr((ord (mensagem[i]) + ord (key_c)) % 256))

retornar base64.urlsafe_b64encode("".join (enc).encode()).decode()

Definir uma função Decodificar() que aceita uma chave para codificar e decodificar junto com a mensagem. Defina uma lista vazia e decodifique a mensagem. Itere até o comprimento da mensagem e defina o módulo da operação como índice e armazene seu valor em key_c. Acrescente o caractere da decodificação da mensagem de string Unicode conforme mostrado abaixo. Retorna a string decodificada.

defDecodificar(mensagem chave):
dez = []
mensagem = base64.urlsafe_b64decode (mensagem).decode()

para eu em intervalo (len (mensagem)):
key_c = key[i % len (key)]
dez.apêndice (chr((256 + ord (mensagem[i]) - ord (chave_c)) % 256))

retornar"".join (dezembro)

Definir uma função Modo() que obtém o modo inserido pelo usuário no widget Entry e chama a função apropriada de acordo com a seleção. Caso o usuário não insira uma resposta válida, exiba uma mensagem de erro.

defModo():
se (modo.get() == 'E'):
Result.set (Encode (key.get(), Text.get()))
elif (modo.get() == 'D'):
Result.set (Decode (key.get(), Text.get()))
outro:
Result.set('Modo inválido')

Definir uma função Saída() para matar e encerrar o interpretador em execução em segundo plano. Defina uma função Reset() para limpar o conteúdo do campo Entry.

defSaída():
root.destroy()

defReiniciar():
Text.set("")
conjunto de chaves("")
modo.set("")
Result.set("")

Defina os widgets Label e Entry para Message, Key, Mode e Text. Especifique a janela pai na qual você deseja colocá-los, o estilo da fonte, o texto e a cor do plano de fundo. Defina também as coordenadas para organizá-los.

Rótulo (raiz, fonte='arial 17 negrito', texto='Mensagem', fg ='preto', bg ="água").lugar (x=60, y=100)
Entrada (raiz, fonte='arial 15', textvariable=Texto, bg='branco').lugar (x=450, y=100)

Rótulo (raiz, fonte='arial 17 negrito', texto='Chave', fg ='preto', bg ="água").lugar (x=60, y=130)
Entrada (raiz, fonte='arial 15', textvariable=chave, bg='branco').lugar (x=450, y=130)

Rótulo (raiz, fonte='arial 17 negrito', texto='Modo (E-Encode, D-Decode)', fg ='preto', bg ="água").lugar (x=60, y=160)
Entrada (raiz, fonte='arial 15', textvariable=modo, bg='branco').lugar (x=450, y=160)

Rótulo (raiz, fonte='arial 17 negrito', texto='Texto', fg ='preto', bg ="água").lugar (x=60, y=190)
Entrada (raiz, fonte='arial 15 negrito', textvariable=Resultado, bg='branco').lugar (x=450, y=190)

Da mesma forma, defina três botões para visualizar o resultado, redefinir os campos e interromper o programa. Os botões têm um parâmetro especial chamado comando que recebe uma função e a executa ao clicar.

Botão (raiz, fonte='arial 15 negrito', texto='Resultado', padx=2, bg ='Cinza claro', comando=Modo).place (x=100, y=240)
Botão (raiz, fonte='arial 15 negrito', texto='Reiniciar', largura=6, comando=Reiniciar, bg='Verde', padx=2).lugar (x=300, y=240)
Botão (raiz, fonte='arial 15 negrito', texto='Parar', largura=6, comando=Sair, bg='Vermelho', padx=2, pady =2).lugar (x=500, y=240)

O circuito principal() A função diz ao Python para executar o loop de eventos Tkinter e ouvir eventos (como pressionamentos de botão) até que você feche a janela.

root.mainloop()

O codificador/decodificador de mensagem em ação

Ao executar o programa, o programa exibe uma janela onde você deve inserir uma mensagem, uma chave e um modo. Ao selecionar o modo de codificação com uma chave de 2009, a mensagem Fazer uso de torna-se em f8KRwpvCnlLChcKjwp5Sf8KW.

Da mesma forma, ao copiar a mensagem codificada e colá-la de volta na entrada para decodificação com a mesma, você obtém a mensagem original de volta.

Cibersegurança usando Python

Você pode usar Python para escrever scripts que automatizam verificações de segurança, monitoram redes e verificam vulnerabilidades. Você pode usá-lo para criar aplicativos robustos que usam autenticação para diminuir as chances de um invasor comprometer seus dados.

Os especialistas em segurança cibernética costumam usar o Python para criar firewalls de aplicativos da Web para monitorar um aplicativo. Eles podem realizar análises de detecção de ameaças usando Machine Learning. Com essa arquitetura, é muito mais fácil criar testes de penetração personalizados e validar protocolos de segurança.