El cifrado César es un cifrado por sustitución muy simple: cada letra se desplaza n posiciones. No es seguro hoy en día, pero es perfecto para aprender.
1) Función de desplazamiento
def shift_char(ch, k):
if "a" <= ch <= "z":
base = ord("a")
return chr((ord(ch) - base + k) % 26 + base)
if "A" <= ch <= "Z":
base = ord("A")
return chr((ord(ch) - base + k) % 26 + base)
return ch # números, espacios, símbolos...
2) Cifrar y descifrar
def caesar_encrypt(text, k):
return "".join(shift_char(ch, k) for ch in text)
def caesar_decrypt(text, k):
return "".join(shift_char(ch, -k) for ch in text)
3) Prueba rápida
msg = "Hola Mundo!"
c = caesar_encrypt(msg, 3)
p = caesar_decrypt(c, 3)
print(c) # Kród Pxqgr!
print(p) # Hola Mundo!
