ok, en base a tu código hice basicamente lo mismo , con una pequeña modificación para descifrar
#-*- coding:utf 8 -*-
diccionario = {'a':'aa', 'b':'ab', 'c':'ac', 'd':'ad', 'e':'ae',
'f':'ba', 'g':'bb', 'h':'bc', 'i':'bd', 'j':'bd',
'k':'be', 'l':'ca', 'm':'cb', 'n':'cc',
'o':'cd', 'p':'ce', 'q':'da', 'r':'db', 's':'dc', 't':'dd',
'u':'de', 'v':'ea', 'w':'eb', 'x':'ec', 'y':'ed', 'z':'ee'}
def cifrar():
texto = input ("Palabra a cifrar: ").lower()
textoleet = ''
for v in texto:
if v in diccionario.keys():
textoleet += diccionario[v]
else:
textoleet += v
print(textoleet)
def descifrar():
texto = input ("Palabra a descifrar: ").lower()
textoleet = ''
inicio= 0
final = 2
while inicio < len(texto) :
v=texto[inicio:final]
inicio+=2
final+=2
for g,w in diccionario.items():
if w == v:
textoleet+= g
print(textoleet)
cifrar()
descifrar()
seguramente hay formas mejores pero es la que se me ocurrió primero. otra cosa, revisa tu diccionario porque la n y la ñ tienen el mismo valor, por eso para simplificar saqué la ñ del mio.