Estoy intentando hacer un script bastante simple para cifrar en Python (siguiendo el método del Cifrado César), éste es el código.
Código:
def crypt(text,x):
abc = "abcdefghijklmnopqrstuvwxyz"
text = text.lower()
for i in range (0,len(text)):
n = abc.find(text[i])
if n<0:
text = text.replace(text[i],text[i])
if n>=0:
text = text.replace(text[i],abc[(n+x)%len(abc)])
text = text.upper()
return text
El problema aparece si por ejemplo intento hacer crypt('hola',4). Lo que hace el script es cambiar la h por una l, y luego cuando llega a la l de la palabra hola cambia las dos eles. Por esa misma razón si intento cifrar un escrito de una medida considerable al final acaba sustituyéndolo todo por la misma letra. He intentado buscar otros ejemplos en python de criptografia pero la mayoría de scripts son más complejos que este. Me gustaría saber si hay alguna forma de fijar una posición una vez ya ha sido modificada una vez, de hacer que no pueda cambiar dos veces.
Muchísimas gracias, un saludo!