Programma del cifrario di Cesare in Python

Questo programma in Python è un esempio di cifratura che utilizza il cifrario di Cesare. Può lavorare con un set di caratteri che include non solo le lettere maiuscole e minuscole dell'alfabeto inglese, ma anche numeri, simboli di punteggiatura, alcuni caratteri speciali e lettere accentate comuni in alcune lingue europee.

def cifra_con_accenti(messaggio, spostamento):
       # Definisci l'elenco dei caratteri da cifrare, includendo lettere accentate comuni
       caratteri = (
       'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
       'abcdefghijklmnopqrstuvwxyz'
       ' !\"#$%&\'()*+,-./0123456789:;<=>?@'
       '[\\]^_`{|}~'
       'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞß'
       'àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ'
       )

      risultato = ""

      for carattere in messaggio:
          if carattere in caratteri:
              # Trova la nuova posizione del carattere dopo lo spostamento
              indice_nuovo = (caratteri.index(carattere) + spostamento) % len(caratteri)
              risultato += caratteri[indice_nuovo]
          else:
              # Se il carattere non è nell'elenco, lo lascia inalterato
              risultato += carattere
      return risultato


# Esempio di codifica
messaggio = "Ciao, Mondo!"
spostamento = 4
messaggio_cifrato = cifra_con_accenti(messaggio, spostamento)
print("Messaggio cifrato:", messaggio_cifrato)

# Esempio di decodifica
spostamento = -4
messaggio_cifrato2 = cifra_con_accenti(messaggio_cifrato, spostamento)
print("Messaggio cifrato:", messaggio_cifrato2)

Ecco come funziona:

Definizione dell'elenco dei caratteri

L'elenco caratteri contiene tutti i caratteri che il programma può cifrare, inclusi i caratteri alfanumerici (sia maiuscoli che minuscoli), simboli di punteggiatura, alcuni caratteri speciali e lettere accentate.

Nota. L'inclusione di un ampio set di caratteri rende questo programma adatto per cifrare messaggi in lingue che utilizzano lettere accentate, oltre a gestire una varietà di simboli e numeri.

Funzione cifra_con_accenti

Questa funzione accetta due parametri: messaggio, che è il testo da cifrare, e spostamento, che indica di quante posizioni ogni carattere nel messaggio dovrebbe essere spostato all'interno dell'elenco dei caratteri definito.

Per ogni carattere nel messaggio, il programma controlla se questo carattere è presente nell'elenco caratteri.

  • Se un carattere è presente, il programma calcola un nuovo indice basato sull'indice corrente del carattere sommato allo spostamento, modulo la lunghezza totale dell'elenco dei caratteri. Questo mi assicura che, se lo spostamento supera la fine dell'elenco, il processo ricominci dall'inizio, comportandosi in modo circolare. Il carattere corrispondente a questo nuovo indice viene aggiunto al risultato cifrato.
  • Se un carattere nel messaggio originale non è presente nell'elenco caratteri. Adr esempio, se è un carattere non incluso nell'elenco, questo carattere viene lasciato inalterato nel messaggio cifrato.

Esempio di utilizzo: Il programma cifra il messaggio "Ciao, Mondo!" con uno spostamento di 4, modificando ogni carattere nel messaggio cifrato in base allo spostamento definito. Poi, decifra il messaggio cifrato utilizzando uno spostamento di -4, che dovrebbe riportare il messaggio al suo stato originale. Per saperne di più su come funziona il cifrario di Cesare.

Il concetto di base del programma è molto semplice.

Per codificare un messaggio basta modificare la stringa nella variabile "messaggio" e la chiave nella variabile "spostamento". La chiave deve essere un numero intero. Ad esempio 4, 5, 6, ecc.

Il programma restituisce un messaggio cifrato.

Esempio. La cifratura del messaggio "Ciao, Mondo!" con la chiave 4 è la stringa "Gmes0$Qsrhs%". Ogni lettera viene spostata di 4 posizioni. Ad esempio, la "C" iniziale diventa "G" perché la "C" viene spostata in avanti quattro volte "C"→"D"→ "E"→"F"→ "G" sull'alfabeto del codice Unicode.

Per decodificare un messaggio cifrato, invece, occorre indicare la stessa chiave come numero negativo.

In questo caso, il programma restituisce il messaggio originale.

Esempio. Se ho cifrato un messaggio con la chiave 4, per decifrare il messaggio devo usare la chiave -4. Ad esempio, nel messaggio cifrato "Gmes0$Qsrhs%" ogni lettera viene spostata indietro di quattro posizioni. Quindi, la "G" iniziale diventa "C" perché "G"→"F"→"E"→"D"→"C".  Quindi, il messaggio decodificato è "Ciao, Mondo!".

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base
  1. Il linguaggio Python
  2. Come installare Python sul PC
  3. Come scrivere un programma in Python
  4. Come usare Python in modalità interattiva
  5. Le variabili
  6. I numeri
  7. Gli operatori logici
  8. Le strutture iterative ( o cicli )
  9. Le strutture condizionali
  10. Le eccezioni
  11. I file in python
  12. Le classi
  13. I moduli