Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

El módulo Base64 de Python es una poderosa herramienta para codificar y decodificar mensajes. Puede usarlo para enviar datos de forma segura a través de Internet. Es un procedimiento estándar para sitios web, aplicaciones y servicios de comunicación usar este tipo de codificación para proteger datos confidenciales de piratas informáticos hostiles.

El módulo Base64 tiene un par de funciones que puede usar para codificar y decodificar mensajes, lo que agrega seguridad adicional a sus transferencias de datos.

El módulo Tkinter y Base64

Tkinter te permite crear aplicaciones de escritorio. Ofrece una variedad de widgets como botones, etiquetas y cuadros de texto que facilitan el desarrollo de aplicaciones sin demasiado esfuerzo. Puedes crear increíbles programas GUI con Tkinter. podrías construir una calculadora simple, una aplicación de lista de tareas o una

instagram viewer
juego de prueba de mecanografía. Para instalar Tkinter en su sistema, abra su terminal y escriba:

pip instalar tkinter

BASE64 proporciona funciones para codificar datos binarios a ASCII y decodificarlos nuevamente a binario. Es compatible con la codificación estándar y segura para URL, lo que hace que la transmisión de información sea más segura. Para convertir una cadena en un carácter Base64, obtenga el valor ASCII de cada carácter y calcule su binario de 8 bits. Convierta este fragmento de 6 bits reagrupando los dígitos y reconvirtiéndolos a sus respectivos valores decimales. Finalmente, use la tabla de codificación Base64 para obtener los valores Base64 para cada decimal.

Cómo codificar y decodificar mensajes en Python

Puedes encontrar el código fuente de este proyecto en su repositorio GitHub.

Comience importando ambos módulos. Inicialice la instancia de Tkinter y muestre la ventana raíz. Establezca el título, las dimensiones en píxeles y el color de fondo de la ventana.

de tkinter importar *
importar base64

raíz = Tk()
raíz.geometría('750x400')
root.configure (fondo='agua')
raíz.título("Codificar y decodificar mensajes usando Python")

Use widgets de etiquetas para mostrar información útil sobre la aplicación. La etiqueta acepta una ventana principal en la que desea colocarla, el texto que debe mostrar y el estilo de fuente, el color y el color de fondo. Usar embalar() para organizar el widget en un bloque de diseño antes de colocarlo en el widget principal. StringVar facilita el control del valor de un widget como una etiqueta o una entrada.

Etiqueta (raíz, texto='Codificador y decodificador de mensajes de Python', fuente='arial 25 negrita', fg='blanco', bg="púrpura").embalar()
Texto = StringVar()
clave = VarCadena()
modo = StringVar()
Resultado = StringVar()

Definir una función Codificar() que acepta una clave para codificar y decodificar junto con el mensaje. Defina una lista vacía e itere hasta la longitud del mensaje. Establezca el índice de la clave como el módulo de la operación y almacene su valor en la variable clave_c. Usar orden() para obtener el valor Unicode del carácter y usar chr() para obtener el carácter que representa el valor especificado.

Agregue este valor a la lista. Une cada elemento de la lista con una cadena vacía y usa el codificar() método para devolver una versión codificada en utf-8 de la cadena. El base64.urlsafe_b64encode() El método codifica esta entrada y reemplaza - con + y _ con /.

definitivamenteCodificar(mensaje clave):
enc = []

para i en rango (len (mensaje)):
clave_c = clave[i % len (clave)]
enc.append (chr((ord (mensaje[i]) + ord (key_c)) % 256))

devolver base64.urlsafe_b64encode("".join (enc).codificar()).decode()

Definir una función Descodificar() que acepta una clave para codificar y decodificar junto con el mensaje. Defina una lista vacía y decodifique el mensaje. Iterar hasta la longitud del mensaje y establecer el módulo de la operación como índice y almacenar su valor en key_c. Agregue el carácter del mensaje de cadena Unicode decodificado como se muestra a continuación. Devuelve la cadena decodificada.

definitivamenteDescodificar(mensaje clave):
diciembre = []
mensaje = base64.urlsafe_b64decode (mensaje).decode()

para i en rango (len (mensaje)):
clave_c = clave[i % len (clave)]
dec.append (chr((256 + ord (mensaje[i]) - ord (key_c)) % 256))

devolver"".join (diciembre)

Definir una función Modo() que obtiene el modo ingresado por el usuario en el widget de Entrada y llama a la función apropiada según la selección. En caso de que el usuario no ingrese una respuesta válida, se muestra un mensaje de error.

definitivamenteModo():
si (modo.get() == 'MI'):
Result.set (Codificar (key.get(), Text.get()))
elif (modo.get() == 'D'):
Result.set (Decodificar (key.get(), Text.get()))
demás:
Conjunto resultante('Modo no válido')

Definir una función Salida() para matar y terminar el intérprete que se ejecuta en segundo plano. Defina una función Restablecer() para borrar el contenido del campo Entrada.

definitivamenteSalida():
root.destroy()

definitivamenteReiniciar():
Texto.set("")
juego de llaves("")
modo.set("")
Conjunto resultante("")

Defina widgets de etiqueta y entrada para mensaje, clave, modo y texto. Especifique la ventana principal en la que desea colocarlos, el estilo de fuente, el texto y el color de fondo. También establezca las coordenadas para organizarlos.

Etiqueta (raíz, fuente='arial 17 negrita', texto='Mensaje', fg='negro', bg="agua").lugar (x=60, y=100)
Entrada (raíz, fuente='arial 15', variabletexto=Texto, bg='blanco').lugar (x=450, y=100)

Etiqueta (raíz, fuente='arial 17 negrita', texto='Llave', fg='negro', bg="agua").lugar (x=60, y=130)
Entrada (raíz, fuente='arial 15', variabletexto=clave, bg='blanco').lugar (x=450, y=130)

Etiqueta (raíz, fuente='arial 17 negrita', texto='Modo (E-Codificación, D-Decodificación)', fg='negro', bg="agua").lugar (x=60, y=160)
Entrada (raíz, fuente='arial 15', variable de texto=modo, bg='blanco').lugar (x=450, y=160)

Etiqueta (raíz, fuente='arial 17 negrita', texto='Texto', fg='negro', bg="agua").lugar (x=60, y=190)
Entrada (raíz, fuente='arial 15 negrita', variabletexto=Resultado, bg='blanco').lugar (x=450, y=190)

Del mismo modo, defina tres botones para ver el resultado, restablecer los campos y detener el programa. Los botones tienen un parámetro especial llamado comando que toma una función y la ejecuta al hacer clic.

Botón (raíz, fuente='arial 15 negrita', texto='Resultado', padx=2, bg='Gris claro', comando=Modo).lugar (x=100, y=240)
Botón (raíz, fuente='arial 15 negrita', texto='Reiniciar', ancho=6, comando=Reiniciar, bg='Verde', padx=2).lugar (x=300, y=240)
Botón (raíz, fuente='arial 15 negrita', texto='Detener', ancho=6, comando=Salir, bg='Rojo', padx=2, pady=2).lugar (x=500, y=240)

El bucle principal() La función le dice a Python que ejecute el ciclo de eventos de Tkinter y escuche los eventos (como presionar un botón) hasta que cierre la ventana.

raíz.mainloop()

El codificador/descodificador de mensajes en acción

Al ejecutar el programa, el programa muestra una ventana donde debe ingresar un mensaje, una clave y un modo. Al seleccionar el modo Codificación con una clave de 2009, el mensaje Hacer uso de se convierte en f8KRwpvCnlLChcKjwp5Sf8KW.

De manera similar, al copiar el mensaje codificado y pegarlo nuevamente en la entrada para decodificarlo con el mismo, se recupera el mensaje original.

Ciberseguridad usando Python

Puede usar Python para escribir scripts que automaticen las comprobaciones de seguridad, supervisen las redes y busquen vulnerabilidades. Puede usarlo para crear aplicaciones robustas que usan la autenticación para reducir las posibilidades de que un atacante comprometa sus datos.

Los expertos en ciberseguridad a menudo usan Python para construir firewalls de aplicaciones web para monitorear una aplicación. Pueden realizar análisis de detección de amenazas utilizando Machine Learning. Con esta arquitectura, es mucho más fácil crear pruebas de penetración personalizadas y validar protocolos de seguridad.