I lettori come te aiutano a sostenere MUO. Quando effettui un acquisto utilizzando i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Per saperne di più.

Il modulo Base64 di Python è un potente strumento per codificare e decodificare i messaggi. Puoi usarlo per inviare dati in modo sicuro su Internet. È una procedura standard per siti Web, app e servizi di comunicazione utilizzare questo tipo di codifica per proteggere i dati sensibili da hacker ostili.

Il modulo Base64 ha un paio di funzioni che puoi utilizzare per codificare e decodificare i messaggi, aggiungendo ulteriore sicurezza ai tuoi trasferimenti di dati.

Il modulo Tkinter e Base64

Tkinter ti consente di creare applicazioni desktop. Offre una varietà di widget come pulsanti, etichette e caselle di testo che semplificano lo sviluppo di applicazioni senza troppi sforzi. Puoi creare incredibili programmi GUI con Tkinter. Tu potresti costruire una semplice calcolatrice, un'app per elenchi di cose da fare o a

instagram viewer
gioco di prova di battitura. Per installare Tkinter nel tuo sistema, apri il tuo terminale e digita:

pip installa tkinter

BASE64 fornisce funzioni per codificare i dati binari in ASCII decodificandoli nuovamente in binario. Supporta sia la codifica standard che sicura per URL che rende la trasmissione delle informazioni più sicura. Per convertire una stringa in un carattere Base64, ottieni il valore ASCII di ciascun carattere e calcola il suo binario a 8 bit. Converti questo pezzo di 6 bit raggruppando nuovamente le cifre e riconvertendole nei rispettivi valori decimali. Infine, usa la tabella di codifica Base64 per ottenere i valori Base64 per ogni decimale.

Come codificare e decodificare i messaggi in Python

Puoi trovare il codice sorgente di questo progetto nel suo Deposito GitHub.

Inizia importando entrambi i moduli. Inizializza l'istanza Tkinter e visualizza la finestra principale. Imposta il titolo, le dimensioni in pixel e il colore di sfondo della finestra.

da tkinter importare *
importare fondo64

radice = Tk()
radice.geometria('750x400')
root.configure (sfondo='acqua')
radice.titolo("Codifica e decodifica messaggi usando Python")

Utilizzare i widget Etichetta per visualizzare informazioni utili sull'applicazione. L'etichetta accetta una finestra padre in cui si desidera posizionarla, il testo che dovrebbe visualizzare e lo stile del carattere, il colore e il colore di sfondo. Utilizzo pacchetto() per organizzare il widget in un blocco di layout prima di inserirlo nel widget principale. StringVar semplifica il controllo del valore di un widget come un'etichetta o una voce.

Etichetta (radice, testo="Codificatore e decodificatore di messaggi Python", carattere='arial 25 grassetto', fg='bianco', bg="viola").pacchetto()
Testo = StringVar()
chiave = StringVar()
modalità = StringVar()
Risultato = StringVar()

Definire una funzione Codificare() che accetta una chiave per la codifica e la decodifica insieme al messaggio. Definire un elenco vuoto e iterare fino alla lunghezza del messaggio. Imposta l'indice di key come modulo dell'operazione e memorizza il suo valore nella variabile key_c. Utilizzo ord() per ottenere il valore Unicode del carattere e utilizzare cr() per ottenere il carattere che rappresenta il valore specificato.

Aggiungi questo valore all'elenco. Unisci ogni elemento della lista con una stringa vuota e usa il codificare() metodo per restituire una versione codificata utf-8 della stringa. IL base64.urlsafe_b64encode() Il metodo codifica questo input e sostituisce - con + e _ con /.

defCodificare(messaggio chiave):
enc = []

per io In intervallo (len (messaggio)):
chiave_c = chiave[i % len (chiave)]
enc.append (chr((ord (messaggio[i]) + ord (chiave_c)) % 256))

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

Definire una funzione Decodificare() che accetta una chiave per la codifica e la decodifica insieme al messaggio. Definire un elenco vuoto e decodificare il messaggio. Itera fino alla lunghezza del messaggio e imposta il modulo dell'operazione come indice e memorizza il suo valore in key_c. Aggiungi il carattere della decodifica del messaggio di stringa Unicode come mostrato di seguito. Restituisce la stringa decodificata.

defDecodificare(messaggio chiave):
dec = []
messaggio = base64.urlsafe_b64decode (messaggio).decode()

per io In intervallo (len (messaggio)):
chiave_c = chiave[i % len (chiave)]
dec.append (chr((256 + ord (messaggio[i]) - ord (chiave_c)) % 256))

ritorno"".join (dic)

Definire una funzione Modalità() che ottiene la modalità inserita dall'utente nel widget Entry e chiama la funzione appropriata secondo la selezione. Nel caso in cui l'utente non immetta una risposta valida, visualizza un messaggio di errore.

defModalità():
Se (mode.get() == 'E'):
Result.set (Codifica (key.get(), Text.get()))
elif (mode.get() == 'D'):
Result.set (Decodifica (key.get(), Text.get()))
altro:
Risultato.set('Modalità non valida')

Definire una funzione Uscita() per uccidere e terminare l'interprete in esecuzione in background. Definire una funzione Reset() per cancellare il contenuto del campo Entry.

defUscita():
radice.distruggi()

defRipristina():
Testo.set("")
mazzo di chiavi("")
modalità.set("")
Risultato.set("")

Definisci i widget Etichetta e Voce per Messaggio, Chiave, Modalità e Testo. Specifica la finestra principale in cui desideri inserirli, lo stile del carattere, il testo e il colore di sfondo. Imposta anche le coordinate per organizzarle.

Etichetta (radice, font='arial 17 grassetto', testo='Messaggio', fg='nero', bg="acqua").posto (x=60, y=100)
Voce (radice, font='ariale 15', textvariable=Testo, bg='bianco').posto (x=450, y=100)

Etichetta (radice, font='arial 17 grassetto', testo='Chiave', fg='nero', bg="acqua").posto (x=60, y=130)
Voce (radice, font='ariale 15', textvariable=chiave, bg='bianco').posto (x=450, y=130)

Etichetta (radice, font='arial 17 grassetto', testo='Modalità (E-Codifica, D-Decodifica)', fg='nero', bg="acqua").posto (x=60, y=160)
Voce (radice, font='ariale 15', textvariable=modalità, bg='bianco').posto (x=450, y=160)

Etichetta (radice, font='arial 17 grassetto', testo='Testo', fg='nero', bg="acqua").posto (x=60, y=190)
Voce (radice, font='arial 15 grassetto', textvariable=Risultato, bg='bianco').posto (x=450, y=190)

Allo stesso modo, definire tre pulsanti per visualizzare il risultato, reimpostare i campi e arrestare il programma. I pulsanti hanno un parametro speciale chiamato comando che accetta una funzione e la esegue al clic.

Pulsante (root, font='arial 15 grassetto', testo='Risultato', padx=2, bg='Grigio chiaro', comando=Modalità).place (x=100, y=240)
Pulsante (root, font='arial 15 grassetto', testo='Ripristina', larghezza=6, comando=Ripristina, bg='Verde', padx=2).posto (x=300, y=240)
Pulsante (root, font='arial 15 grassetto', testo='Fermare', larghezza=6, comando=Esci, bg='Rosso', padx=2, pady=2).posto (x=500, y=240)

IL ciclo principale() La funzione dice a Python di eseguire il ciclo di eventi di Tkinter e di ascoltare gli eventi (come la pressione di un pulsante) finché non chiudi la finestra.

root.mainloop()

Il codificatore/decodificatore di messaggi in azione

Durante l'esecuzione del programma, il programma visualizza una finestra in cui è necessario inserire un messaggio, una chiave e una modalità. Selezionando la modalità di codifica con una chiave del 2009, il messaggio Utilizzare diventa f8KRwpvCnlLChcKjwp5Sf8KW.

Allo stesso modo, copiando il messaggio codificato e incollandolo nuovamente nell'input per la decodifica con lo stesso, si ottiene il messaggio originale.

Sicurezza informatica utilizzando Python

Puoi usare Python per scrivere script che automatizzano i controlli di sicurezza, monitorano le reti e scansionano le vulnerabilità. Puoi usarlo per creare applicazioni robuste che utilizzano l'autenticazione per ridurre le possibilità che un utente malintenzionato comprometta i tuoi dati.

Gli esperti di sicurezza informatica usano spesso Python per creare firewall per applicazioni Web per monitorare un'applicazione. Possono eseguire analisi di rilevamento delle minacce utilizzando Machine Learning. Con questa architettura, è molto più semplice creare penetration test personalizzati e convalidare i protocolli di sicurezza.