È uscito il Corso Java Completo — usa il coupon JAVA2026 (fino al 30 giugno)

Criptatore di Testi con Python

Descrizione del Progetto

In questo progetto, realizzerai un criptatore di testi utilizzando Python. Il programma permetterà di criptare e decriptare testi utilizzando una chiave simmetrica. Utilizzeremo la libreria cryptography per la crittografia e la decrittografia.

Requisiti

  1. Librerie Python: Utilizzare la libreria cryptography per la crittografia e decrittografia.
  2. Interfaccia Utente: Creare una semplice interfaccia utente a riga di comando che permetta all’utente di inserire il testo da criptare o decriptare e la chiave.
  3. Crittografia Simmetrica:
    • Generare una chiave simmetrica per la crittografia e decrittografia.
    • Criptare il testo utilizzando la chiave.
    • Decriptare il testo utilizzando la stessa chiave.

Passaggi

  1. Installazione delle Librerie:

    pip install cryptography
    
  2. Creazione del Programma:

    • Generare una chiave simmetrica.
    • Implementare la funzione di crittografia.
    • Implementare la funzione di decrittografia.
    • Creare una semplice interfaccia utente a riga di comando per interagire con l’utente.

Esempio di Codice

from cryptography.fernet import Fernet

# Funzione per generare una chiave
def generate_key():
    return Fernet.generate_key()

# Funzione per criptare un messaggio
def encrypt_message(key, message):
    fernet = Fernet(key)
    encrypted_message = fernet.encrypt(message.encode())
    return encrypted_message

# Funzione per decriptare un messaggio
def decrypt_message(key, encrypted_message):
    fernet = Fernet(key)
    decrypted_message = fernet.decrypt(encrypted_message).decode()
    return decrypted_message

def main():
    print("Criptatore di Testi")

    while True:
        print("\nSeleziona un'opzione:")
        print("1. Genera una nuova chiave")
        print("2. Cripta un messaggio")
        print("3. Decripta un messaggio")
        print("4. Esci")

        choice = input("Inserisci la tua scelta: ")

        if choice == '1':
            key = generate_key()
            print(f"Chiave generata: {key.decode()}")
        elif choice == '2':
            key = input("Inserisci la chiave: ").encode()
            message = input("Inserisci il messaggio da criptare: ")
            encrypted_message = encrypt_message(key, message)
            print(f"Messaggio criptato: {encrypted_message.decode()}")
        elif choice == '3':
            key = input("Inserisci la chiave: ").encode()
            encrypted_message = input("Inserisci il messaggio criptato: ").encode()
            try:
                decrypted_message = decrypt_message(key, encrypted_message)
                print(f"Messaggio decriptato: {decrypted_message}")
            except Exception as e:
                print(f"Errore durante la decrittazione: {e}")
        elif choice == '4':
            print("Uscita...")
            break
        else:
            print("Scelta non valida, riprova.")

if __name__ == "__main__":
    main()

Istruzioni per l’Esecuzione

  1. Installazione delle librerie necessarie:

    pip install cryptography
    
  2. Esecuzione del Programma:

    • Salva il codice in un file Python, ad esempio criptatore_testi.py.
    • Esegui il programma:
      python criptatore_testi.py
      
    • Segui le istruzioni per generare una chiave, criptare un messaggio e decriptare un messaggio.

Estensioni Possibili

  1. Interfaccia Grafica: Utilizzare una libreria come tkinter per creare un’interfaccia grafica per il criptatore di testi.
  2. Salvataggio delle Chiavi: Aggiungere funzionalità per salvare le chiavi generate in un file sicuro.
  3. Supporto per File: Implementare la crittografia e decrittografia di file oltre ai messaggi di testo.