GUI de criptografía usando python

Usando técnicas de criptografía podemos generar claves para un texto plano que no se puede predecir fácilmente. Usamos criptografía para garantizar el flujo seguro de datos de una fuente a otra sin que un usuario malintencionado acceda a ellos.

requisitos previos:

Lenguaje utilizadoPython .
Tkinter : este módulo se utiliza para crear GUI utilizando el lenguaje python. Para saber más sobre tkinter haz click aquí .
Conceptos básicos de criptografía : la criptografía se utiliza para la comunicación segura.

  • Cifrado: el proceso de codificar un mensaje o información de tal manera que solo las partes autorizadas puedan acceder a él.
  • Descifrado: el proceso de tomar texto codificado o encriptado u otros datos y convertirlos nuevamente en texto.
  • Algoritmo utilizado

    BLOC DE UNA VEZ
    El one-time pades un tipo de encriptación que es irrompible. Un bloc de una sola vez generará una clave, esta clave es compartida por ambos usuarios, por lo que realiza el cifrado y el descifrado. La clave utilizada se genera aleatoriamente y esta clave se combina con el texto sin formato para formar el texto cifrado. Podemos utilizar diferentes algoritmos para la generación del texto cifrado como modular addition, modular XOR, etc. Dado que la clave generada cada vez es única, es imposible de romper.

    Ejemplos:

    En este ejemplo, usamos una adición modular. Cada letra del mensaje tiene su valor numérico asociado. Este valor numérico se mapea con la letra correspondiente de la clave y el texto cifrado se genera realizando una operación de suma modular. si el valor excede 26, el resultado será la modificación del valor con 26. Aquí ‘GEEKS’ actúa como un mensaje simple y ‘DFSTL’ actúa como la tecla del teclado de una sola vez.

          G     E      E       K      S      message
       6 (G)   4 (E)  4 (E)   10 (K)  18 (S) message
    +  3 (D)   5 (F)  18 (S)  19 (T)  11 (L) key
    =  9       9      22      29      29     message + key
    =  9 (J)   9 (J)  22 (W)  3 (D)   3 (D) (message + key) mod 26
          J       J       W      D       D  ? ciphertext
    

    Ya que usamos la suma modular para la generación del texto cifrado. Para recuperar el mensaje original tenemos que realizar una resta modular. Si el valor resulta negativo sumaremos 26 al valor, el valor numérico resultante dará como resultado la generación del mensaje original.

           J       J       W       D       D  ciphertext
        9 (J)   9 (J)   22 (W)  3 (D)   3 (D) ciphertext
    -   3 (D)   5 (F)  18 (S)  19 (T)  11 (L) key
    =   6       4       4     -16      -8     ciphertext – key
    =   6 (G)   4 (E)  4 (E)  10(K)    18 (S) ciphertext – key (mod 26)
           G       E       E      K       S  ? message
    

    A continuación se muestra la implementación.

    # python module for one-timepad
    import onetimepad   
    # python module to create GUI        
    from tkinter import * 
      
             
    root = Tk()
    root.title("CRYPTOGRAPHY")
    root.geometry("800x600")
      
    def encryptMessage():                      
        pt = e1.get()
      
        # inbuilt function to encrypt a message
        ct = onetimepad.encrypt(pt, 'random')
        e2.insert(0, ct)
      
    def decryptMessage():                     
        ct1 = e3.get()
      
        # inbuilt function to decrypt a message
        pt1 = onetimepad.decrypt(ct1, 'random')
        e4.insert(0, pt1)
          
    # creating labels and positioning them on the grid
    label1 = Label(root, text ='plain text')               
    label1.grid(row = 10, column = 1)
    label2 = Label(root, text ='encrypted text')
    label2.grid(row = 11, column = 1)
    l3 = Label(root, text ="cipher text")
    l3.grid(row = 10, column = 10)
    l4 = Label(root, text ="decrypted text")
    l4.grid(row = 11, column = 10)
      
    # creating entries and positioning them on the grid
    e1 = Entry(root)
    e1.grid(row = 10, column = 2)
    e2 = Entry(root)
    e2.grid(row = 11, column = 2)
    e3 = Entry(root)
    e3.grid(row = 10, column = 11)
    e4 = Entry(root)
    e4.grid(row = 11, column = 11)
      
    # creating encryption button to produce the output
    ent = Button(root, text = "encrypt", bg ="red", fg ="white", command = encryptMessage)
    ent.grid(row = 13, column = 2)
      
    # creating decryption button to produce the output
    b2 = Button(root, text = "decrypt", bg ="green", fg ="white", command = decryptMessage)
    b2.grid(row = 13, column = 11)
      
      
    root.mainloop()
    

    Salida
    para cifrado:
    cifrado de python

    Para el descifrado:
    descifrado de python

    Nota: La técnica predeterminada utilizada por el módulo no es la misma en el ejemplo dado. Podemos aplicar diferentes fórmulas para la generación del texto cifrado, sin embargo, el principio subyacente sigue siendo el mismo.

    Publicación traducida automáticamente

    Artículo escrito por KaranGupta5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *