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
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()
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