Cifrado Vigenère en Python: Protege tus Mensajes con una Clave
Tags: python, programming
Published: 2023-10-25 19:04:03

En la era digital, la privacidad y la seguridad de la información son preocupaciones cada vez más relevantes. Cuando necesitas enviar mensajes secretos o confidenciales, es esencial contar con herramientas de cifrado confiables. Una de estas herramientas es el cifrado Vigenère, que ha sido utilizado durante siglos para proteger información sensible. En este artículo, exploraremos un código Python que implementa el cifrado Vigenère y te guiará a través de su uso.

## Introducción al Cifrado Vigenère

El cifrado Vigenère es un tipo de cifrado polialfabético, lo que significa que utiliza una clave para cifrar el texto original, y esta clave se repite cíclicamente durante todo el proceso de cifrado. A diferencia de un cifrado César, que desplaza todas las letras por la misma cantidad, el cifrado Vigenère desplaza las letras en diferentes cantidades según la posición de la letra en la clave.

## El Código Python

A continuación, se muestra el código Python que implementa el cifrado Vigenère y que te permitirá cifrar y descifrar mensajes de manera sencilla:

```python
def encrypt_vigenere(plain_text, key):
    encrypted_text = ""
    key_index = 0
    for char in plain_text:
        if char.isalpha():
            char = char.upper()
            shift = ord(key[key_index].upper()) - ord('A')
            encrypted_char = chr((ord(char) - ord('A') + shift) % 26 + ord('A'))
            encrypted_text += encrypted_char
            key_index = (key_index + 1) % len(key)
        else:
            encrypted_text += char
    return encrypted_text

def decrypt_vigenere(encrypted_text, key):
    decrypted_text = ""
    key_index = 0
    for char in encrypted_text:
        if char.isalpha():
            char = char.upper()
            shift = ord(key[key_index].upper()) - ord('A')
            decrypted_char = chr((ord(char) - ord('A') - shift) % 26 + ord('A'))
            decrypted_text += decrypted_char
            key_index = (key_index + 1) % len(key)
        else:
            decrypted_text += char
    return decrypted_text

def main():
    print("Bienvenido al cifrador Vigenère")
    option = input("Ingrese 'C' para cifrar o 'D' para descifrar: ")

    if option.upper() == 'C':
        plain_text = input("Ingrese el texto a cifrar: ")
        key = input("Ingrese la clave: ")

        encrypted_text = encrypt_vigenere(plain_text, key)
        print("Texto cifrado:", encrypted_text)

    elif option.upper() == 'D':
        encrypted_text = input("Ingrese el texto a descifrar: ")
        key = input("Ingrese la clave: ")

        decrypted_text = decrypt_vigenere(encrypted_text, key)
        print("Texto descifrado:", decrypted_text)

    else:
        print("Opción no válida. Por favor, ingrese 'C' o 'D'.")

main()
```

## Cómo Usar el Cifrado Vigenère

El código proporciona una interfaz de línea de comandos para cifrar y descifrar texto utilizando el cifrado Vigenère. Cuando ejecutas el programa, te dará la bienvenida y te pedirá que elijas entre cifrar ('C') o descifrar ('D') un mensaje. Veamos ejemplos de cómo usarlo:

### Ejemplo 1: Cifrar un Mensaje

1. Al ejecutar el programa, elige la opción 'C' para cifrar un mensaje.
2. Ingresa el texto que deseas cifrar, por ejemplo, "Hello".
3. Luego, proporciona una clave, como "KEY".
4. El programa generará el texto cifrado y te mostrará el resultado. En este caso, obtendrías "RIJVS".

### Ejemplo 2: Descifrar un Mensaje

1. Al ejecutar el programa, elige la opción 'D' para descifrar un mensaje.
2. Ingresa el texto cifrado, en este caso, "RIJVS".
3. Proporciona la misma clave que se usó para cifrar el mensaje, es decir, "KEY".
4. El programa descifrará el texto y te mostrará el mensaje original, que en este caso sería "HELLO".

## Conclusión

El cifrado Vigenère es una técnica clásica pero efectiva para proteger la confidencialidad de los mensajes. Este código Python te proporciona una manera sencilla de cifrar y descifrar texto utilizando el cifrado Vigenère. Puedes utilizarlo para comunicarte de manera segura con tus amigos, colegas o cualquier persona que tenga la clave para descifrar tus mensajes.