44 ⭐ Encryption Program 🔐

Obiettivi di apprendimento:

  • Implementare un semplice algoritmo di crittografia (es. Cifrario di Cesare).
  • Utilizzare le funzioni ord() e chr() per lavorare con i codici dei caratteri.
  • Gestire le maiuscole/minuscole e caratteri speciali.

Programma Esempio (Cifrario di Cesare):

def cifra_cesare(testo, chiave_spostamento):
    risultato = ""

    for carattere in testo:
        if carattere.isalpha(): # Se è una lettera (A-Z, a-z)
            # Determina la base ASCII (65 per 'A', 97 per 'a')
            base = ord('A') if carattere.isupper() else ord('a')

            # 1. Converte la lettera in un numero (0-25)
            # Esempio: 'C' (67) -> 67 - 65 = 2
            indice_originale = ord(carattere) - base

            # 2. Applica lo spostamento (mod 26 per ciclicità)
            # Esempio: 2 + 3 = 5 -> 5 % 26 = 5
            indice_cifrato = (indice_originale + chiave_spostamento) % 26

            # 3. Riconverte il numero cifrato (0-25) in carattere
            # Esempio: 5 + 65 = 70 -> 'F'
            carattere_cifrato = chr(base + indice_cifrato)

            risultato += carattere_cifrato

        else:
            # Lascia inalterati spazi, numeri o simboli
            risultato += carattere

    return risultato

def encryption_program():
    print("🔐 CIFRARIO DI CESARE (CRITTOGRAFIA) 🔐")

    try:
        messaggio = input("Inserisci il messaggio da cifrare: ")
        chiave = int(input("Inserisci la chiave di spostamento (es. 3): "))

        # Cifratura
        testo_cifrato = cifra_cesare(messaggio, chiave)
        print(f"\nTESTO CIFRATO: {testo_cifrato}")

        # Decifratura (spostamento all'indietro)
        testo_decifrato = cifra_cesare(testo_cifrato, -chiave)
        print(f"TESTO DECIFRATO (Verifica): {testo_decifrato}")

    except ValueError:
        print("❌ La chiave di spostamento deve essere un numero intero.")

# encryption_program()