Implementando Cifrado Atbash

Definición: el cifrado Atbash es un cifrado de sustitución con una sola clave específica en la que todas las letras se invierten, es decir, de la A a la Z y de la Z a la A. Originalmente se usó para codificar los alfabetos hebreos, pero se puede modificar para codificar cualquier alfabeto. 

Relación con Affine: el cifrado Atbash se puede considerar como un caso especial de cifrado Affine con ambas claves siendo 25, es decir, a = 25 y b = 25

clave atbash

Algoritmo: La siguiente clave se utiliza en el algoritmo Atbash

ABCDEFGHIJKLMNOPQRSTUVWXYZ
ZYXWVUTSRQPONMLKJIHGFEDCBA

Cifrado

Para cifrar un mensaje, busque la letra que desea cifrar en la fila superior y luego reemplácela con la letra de la fila inferior. En el siguiente ejemplo, ciframos el mensaje ‘GEEKS FOR GEEKS’. La primera letra que deseamos cifrar es ‘G’, que está arriba de ‘T’, por lo que la primera letra del texto cifrado es ‘T’. La siguiente letra es ‘E’, que está arriba de ‘V’, por lo que viene después. El mensaje completo está cifrado como:

GEEKS FOR GEEKS
TVVPH ULI TVVPH

Descifrado

Del mismo modo, si queremos descifrar, digamos ‘TVVPH ULI TVVPH’, reemplazaríamos la primera letra ‘T’ con ‘G’. La segunda letra ‘V’ con ‘E’ y así sucesivamente sustituyendo todas las letras incluyendo la última ‘H’ con ‘S’. El mensaje descifrado será:

TVVPH ULI TVVPH
GEEKS FOR GEEKS

El enfoque: aquí, el mapeo de cada elemento se realiza para la clave como pares ‘clave-valor’ en un diccionario y luego se usa como una tabla de búsqueda cada vez que desea cifrar un solo carácter. Código: 

Implementación:

Python

# Python program to implement Atbash Cipher
 
# This script uses dictionaries to lookup various alphabets
lookup_table = {'A' : 'Z', 'B' : 'Y', 'C' : 'X', 'D' : 'W', 'E' : 'V',
        'F' : 'U', 'G' : 'T', 'H' : 'S', 'I' : 'R', 'J' : 'Q',
        'K' : 'P', 'L' : 'O', 'M' : 'N', 'N' : 'M', 'O' : 'L',
        'P' : 'K', 'Q' : 'J', 'R' : 'I', 'S' : 'H', 'T' : 'G',
        'U' : 'F', 'V' : 'E', 'W' : 'D', 'X' : 'C', 'Y' : 'B', 'Z' : 'A'}
 
def atbash(message):
    cipher = ''
    for letter in message:
        # checks for space
        if(letter != ' '):
            #adds the corresponding letter from the lookup_table
            cipher += lookup_table[letter]
        else:
            # adds space
            cipher += ' '
 
    return cipher
 
# Driver function to run the program
def main():
    #encrypt the given message
    message = 'GEEKS FOR GEEKS'
    print(atbash(message.upper()))
     
    #decrypt the given message
    message = 'TVVPH ULI TVVPH'
    print(atbash(message.upper()))
 
 
# Executes the main function
if __name__ == '__main__':
    main()
Producción

TVVPH ULI TVVPH
GEEKS FOR GEEKS

Ventajas: dado que es solo un cifrado afín con a = 25 = b, no necesitamos escribir funciones separadas para el cifrado y el descifrado. Podemos reutilizar la misma función para ambos propósitos. 

Análisis: tiene una clave constante, es el cifrado más fácil de descifrar y casi no proporciona seguridad. Cualquiera puede suponer que es atbash y descifrar el mensaje invirtiendo las letras. 

Este artículo es una contribución de Palash Nigam . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *