Cifrario di Cesare

Vedi la discussione

Codifica 1

Dal Piaz
Gdo#Sld}

Osserva

  • Ogni carattere del messaggio in chiaro viene sostituito con il carattere 3 posizioni più avanti
  • I caratteri non alfabetici e le ultime lettere dell’alfabeto diventano caratteri strani
def cesare(m):
    mm=""
    for c in m:
        mm+=chr(ord(c)+3)
    return mm

Decodifica

def cesare_(m):
    mm=""
    for c in m:
        mm+=chr(ord(c)-3)
    return mm

Codifica 2

Dal Piaz
Gdo Sldc

Osserva

  • Le lettere maiuscole e le lettere minuscole crescono di 3 posizioni: delta=delta+3
  • Se si supera la lettera Z (z) si ricomincia dalla A (a): delta=delta%26
  • Tutti gli altri caratteri rimangono inalterati
def cesare(m): 
    mm="" 
    for c in m:
        if(c >= 'A') and (c <= 'Z'):
            delta=ord(c)-ord('A') 
            delta=(delta+3)%26 
            c=chr(ord('A')+delta) 
        elif(c >= 'a') and (c <= 'z'): 
            delta=ord(c)-ord('a') 
            delta=(delta+3)%26 
            c=chr(ord('a')+delta)
        mm+=c
    return mm

Codifica 3

Due stringhe contengono ordinatamente le lettere corrispondenti alla cifratura

#      ABCDEFGHIJKLMNOPQRSTUVWXYZ    Originale
UPPER="DEFGHIJKLMNOPQRSTUVWXYZABC" # Codificato
#      abcdefghijklmnopqrstuvwxyz    Originale
LOWER="defghijklmnopqrstuvwxyzabc" # Codificato

def cesare(m): 
    mm="" 
    for c in m:
        if(c >= 'A') and (c <= 'Z'): 
            c=UPPER[ord(c)-ord('A')] 
        elif(c >= 'a') and (c <= 'z'): 
            c=LOWER[ord(c)-ord('a')]
        mm+=c
    return mm