d1={'00':'a','01':'b','02':'c','03':'d','04':'e','05':'f','06':'g','07':'h','08':'i','09':'j','10':'k','11':'l','12':'m','13':'n','14':'ñ','15':'o','16':'p','17':'q','18':'r','19':'s','20':'t','21':'u','22':'v','23':'w','24':'x','25':'y','26':'z'}
d2 = {v: k for k, v in d1.items()} #d2 es el diccionario inverso a d1
def encriptar(x,d2):
resultado=''
for i in x:
resultado+=d2.get(i)
return resultado
def desencriptar(y,d1):
resultado=''
for i in range(0,len(y),2):
resultado+=d1.get(y[i]+y[i+1])
return resultado
x=list(input("¿Qué frase quieres encriptar?").lower() or 'hola')
y=encriptar(x,d2)
print(y)
z=desencriptar(y,d1)
print(z)
Primero definimos el diccionario con los valores de las letras y el número que las identifica. Usando una función para encriptar, que empieza resultado como una variable vacía y usa un for para recorrer una por una las letras de la frase que nos ha dado el usuario, añadimos a resultado el número que representa a la letra que estamos analizando, devolvemos el valor final de resultados y lo imprimimos ya fuera del def.
Para el def desencriptar hacemos algo parecido, definimos resultado vacio, for recorriendo uno por uno los elementos de y, una variable que tiene el mismo valor que el mensaje encriptado, y luego añadimos a nuestra nueva variable, resultado, el valor que le corresponde a cada número de el diccionario de d2, que es el diccionario d1 pero cambiamos los números por las letras, y viceversa, devolvemos lo que eso nos dé.
Para finalizar el código definimos la variable x, que coge el mensaje del usuario, ejecutamos los dos def, y les damos los valores en los paréntesis, para encriptar y desencriptar e imprime todo.