0% encontró este documento útil (0 votos)
16 vistas3 páginas

César Python

El cifrado César es un método de cifrado por sustitución que desplaza las letras de un texto un número específico de posiciones en el alfabeto. La función 'cifrado_cesar' permite cifrar o descifrar un texto según el desplazamiento indicado, manteniendo inalterados los caracteres no alfabéticos. El código incluye ejemplos de uso y manejo de errores para la entrada del desplazamiento.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas3 páginas

César Python

El cifrado César es un método de cifrado por sustitución que desplaza las letras de un texto un número específico de posiciones en el alfabeto. La función 'cifrado_cesar' permite cifrar o descifrar un texto según el desplazamiento indicado, manteniendo inalterados los caracteres no alfabéticos. El código incluye ejemplos de uso y manejo de errores para la entrada del desplazamiento.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 3

El cifrado César es uno de los cifrados más simples y conocidos.

Es un tipo de cifrado por


sustitución en el que cada letra en el texto original es reemplazada por una letra que se
encuentra un cierto número de posiciones más adelante o más atrás en el alfabeto.

def cifrado_cesar(texto, desplazamiento, modo='cifrar'):


"""
Cifra o descifra un texto usando el cifrado César.

Args:
texto (str): El texto a cifrar o descifrar.
desplazamiento (int): El número de posiciones a desplazar las letras.
modo (str): 'cifrar' para cifrar el texto, 'descifrar' para descifrarlo.
Por defecto es 'cifrar'.

Returns:
str: El texto cifrado o descifrado.
"""
resultado = ""

if modo == 'descifrar':
desplazamiento = -desplazamiento # Para descifrar, el desplazamiento es inverso

for caracter in texto:


if 'a' <= caracter <= 'z':
# Manejar letras minúsculas
posicion_original = ord(caracter) - ord('a')
nueva_posicion = (posicion_original + desplazamiento) % 26
nuevo_caracter = chr(ord('a') + nueva_posicion)
resultado += nuevo_caracter
elif 'A' <= caracter <= 'Z':
# Manejar letras mayúsculas
posicion_original = ord(caracter) - ord('A')
nueva_posicion = (posicion_original + desplazamiento) % 26
nuevo_caracter = chr(ord('A') + nueva_posicion)
resultado += nuevo_caracter
else:
# Mantener otros caracteres (números, espacios, signos de puntuación) sin cambios
resultado += caracter
return resultado

# --- Ejemplos de uso ---

if __name__ == "__main__":
texto_original = input("Ingresa el texto a cifrar: ")
try:
desplazamiento = int(input("Ingresa el valor de desplazamiento (un número entero): "))
except ValueError:
print("Entrada inválida. El desplazamiento debe ser un número entero.")
exit()

# Cifrar el texto
texto_cifrado = cifrado_cesar(texto_original, desplazamiento, modo='cifrar')
print(f"\nTexto original: {texto_original}")
print(f"Texto cifrado: {texto_cifrado}")

# Descifrar el texto (para verificar)


texto_descifrado = cifrado_cesar(texto_cifrado, desplazamiento, modo='descifrar')
print(f"Texto descifrado: {texto_descifrado}")

print("\n--- Otro ejemplo con diferente desplazamiento ---")


texto_ejemplo = "Hola Mundo"
desplazamiento_ejemplo = 3
texto_cifrado_ejemplo = cifrado_cesar(texto_ejemplo, desplazamiento_ejemplo)
print(f"Texto original: {texto_ejemplo}")
print(f"Desplazamiento: {desplazamiento_ejemplo}")
print(f"Texto cifrado: {texto_cifrado_ejemplo}")
print(f"Texto descifrado: {cifrado_cesar(texto_cifrado_ejemplo, desplazamiento_ejemplo,
modo='descifrar')}")

Explicación del código:


* cifrado_cesar(texto, desplazamiento, modo='cifrar') función:
* texto: Es el string que quieres cifrar o descifrar.
* desplazamiento: Es un número entero que indica cuántas posiciones se moverá cada
letra en el alfabeto. Por ejemplo, un desplazamiento de 3 significaría que 'A' se convierte en
'D', 'B' en 'E', y así sucesivamente.
* modo: Es un parámetro opcional que puede ser 'cifrar' (por defecto) o 'descifrar'.
* resultado = "": Se inicializa una cadena vacía donde se irá construyendo el texto
cifrado/descifrado.
* if modo == 'descifrar': desplazamiento = -desplazamiento: Si el modo es descifrar, se
invierte el signo del desplazamiento. Esto hace que, en lugar de mover las letras hacia
adelante, las mueva hacia atrás para deshacer el cifrado.
* for caracter in texto:: El código itera sobre cada caracter en el texto de entrada.
* if 'a' <= caracter <= 'z': y elif 'A' <= caracter <= 'Z':: Estas condiciones verifican si el
caracter actual es una letra (minúscula o mayúscula). El cifrado César solo afecta a las
letras.
* ord(caracter): Convierte un caracter a su valor ASCII (entero).
* ord('a') o ord('A'): Se resta el valor ASCII de 'a' o 'A' para obtener una posición de base
cero en el alfabeto (por ejemplo, 'a' sería 0, 'b' sería 1, etc.).
* nueva_posicion = (posicion_original + desplazamiento) % 26: Aquí es donde ocurre el
cifrado.
* Se suma el desplazamiento a la posicion_original.
* El operador % 26 (módulo 26) es crucial. Asegura que la nueva posición "envuelva" el
alfabeto. Por ejemplo, si estamos en 'Z' (posición 25) y el desplazamiento es 3, 25 + 3 = 28.
28 % 26 = 2, lo que corresponde a 'C'. Esto maneja los casos en los que el desplazamiento
excede el final del alfabeto.
* chr(ord('a') + nueva_posicion) o chr(ord('A') + nueva_posicion): Convierte la nueva
posición de vuelta a un caracter ASCII.
* else: resultado += caracter: Si el caracter no es una letra (por ejemplo, un espacio, un
número o un signo de puntuación), se añade directamente al resultado sin cambios.
* return resultado: La función devuelve el texto cifrado o descifrado.
* if __name__ == "__main__": bloque:
* Este bloque de código se ejecuta solo cuando el script se ejecuta directamente (no
cuando se importa como un módulo en otro script).
* Pide al usuario que ingrese el texto y el valor de desplazamiento.
* Llama a la función cifrado_cesar para cifrar el texto.
* Imprime el texto original, el texto cifrado y, para verificar, el texto descifrado.
* Incluye un bloque try-except para manejar el caso en que el usuario no introduce un
número válido para el desplazamiento.

Este programa te proporciona una implementación funcional del cifrado César,


permitiéndote tanto cifrar como descifrar texto con un desplazamiento dado.

También podría gustarte