Quiero compartir un script en python del Cifrado de Vigenère.
def vigenere_cipher(text, key, decrypt=False):
text = text.upper()
key = key.upper()
key_length = len(key)
key_indices = [ord(k) - ord('A') for k in key]
result = []
for i, char in enumerate(text):
if 'A' <= char <= 'Z':
shift = key_indices[i % key_length]
if decrypt:
shift = -shift
new_char = chr(((ord(char) - ord('A') + shift) % 26) + ord('A'))
result.append(new_char)
else:
result.append(char)
return ''.join(result)
A manera de test consideremos:
plaintext = "LinuxChad"
key = "ytchad"
Cipher:
ciphertext = vigenere_cipher(plaintext, key)
print("Texto cifrado:", ciphertext)
output:
Texto cifrado: JBPBXFFTF
Decipher:
decrypted_text = vigenere_cipher(ciphertext, key, decrypt=True)
print("Texto descifrado:", decrypted_text)
output:
Texto descifrado: LINUXCHAD