2

Cifrado Atbash

Neo
neotran
10117

Aprovechando el curso, vamos a ver uno de los temas que más me gustan, la criptografía si quieren saber un poco más sobre esta rama de estudio tengo un vídeo explicando este mismo tema en el siguiente canal:

QwertyPy

Ó en el siguiente blog que tengo: R3gularWeb


Resumiendo, el cifrado atbash lo único que hace es invertir nuestro alfabeto, cambiando la letra A por la Z, la B por la Y, la C por X y así sucesivamente.
Entonces, si tenemos como entrada PLATZI el resultado será KOZGAR puedes comprobarlo por tu propia cuenta

'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
'ZYXWVUTSRQPONMLKJIHGFEDCBA'

Entonces vamos a iniciar, primer paso crear un archivo .py en mi caso lo voy a llamar atbash.py y tendremos lo normal en python, un punto donde le decimos al compilador en que punto tiene que iniciar el programa

if__name__ == "__main__": 

Dentro vamos a tener una variable que va a recibir el mensaje a cifrar

if __name__ == "__main__": 
    message = input('Write a message: ')

Lo siguiente es tener nuestra función que realice el proceso de cifrar y descifrar, esta va a tener un parámetro que será el mensaje del usuario.

defatbash(message):passif __name__ == "__main__": 
    message = input('Write a message: ')

Dentro de nuestro método tendremos dos constantes que será nuestro abecedario y el abecedario invertido, también una variable result que guardará el resultado de todo el proceso.

defatbash(message):
    ABC = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    ZYX = 'ZYXWVUTSRQPONMLKJIHGFEDCBA'
    result = ''

Bien, ¿Cómo vamos a realizar este proceso? voy a enlistar los paso que haré a continuación.

  • Recorrer letra por letra del mensaje original
  • Buscar la posición de dicha letra en nuestro alfabeto original
  • Agarrar la letra correspondiente en la misma posición pero en el alfabeto invertido
  • Almacenarlo en la variable result, sin borrar su valor anterior

Bien , ya con esto espero puedas entender el siguiente bloque de código:

for letter in message:
        result += ZYX[ABC.index(letter)]

Como se ha visto en el curso, para recorrer un string podemos utilizar un bucle for, entonces si tenemos Platzi como entrada el ciclo hará lo siguiente:

  • letter => P
  • letter => L
  • letter => A
  • letter => T
  • letter => Z
  • letter => I

Ahora con index() podemos obtener el índice de un char dentro de una cadeta de texto entonces:

ABC.index(letter)

Dentro del ciclo puede verse de la siguiente manera

ABC.index('P')

Para el ejemplo de PLATZI vamos a tener los siguientes valores:

15 11 0 19 25 8

Ya para finalizar le pasamos cada uno de los índices al string del abecedario invertido y de ahí viene este parte del código

ZYX[ABC.index(letter)]

Simple ¿no?

Entonces solo tenemos que retornar nuestra variable result y llamar a la función atbash desde el punto de inicio, pasandole nuestra variable message

def atbash(message):
    ABC = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    ZYX = 'ZYXWVUTSRQPONMLKJIHGFEDCBA'
    result = ''

    for letter in message:
        result += ZYX[ABC.index(letter)]

    returnresultif __name__ == "__main__": 
    message = input('Write a message: ')
    print(f'Result: { atbash(message.upper()) }')

Y listo, ya pueden cifrar sus mensajes… aunque claro, este es muy simple así que si les gusta puedo traer más cifrados.

Escribe tu comentario
+ 2
1
6439Puntos

No se como llegué aqui… Pero me interesa y lo pondré en práctica, si puedes dar mas cifrados lo agradezco