El Cuadrado de Polibio básico es una cuadrícula de 5x5 con las letras A-Z escritas en ella. "I" y "J" normalmente comparten una casilla (ya que hay 26 letras y solo 25 casillas).
| 1 | 2 | 3 | 4 | 5 | |
|---|---|---|---|---|---|
| 1 | A | B | C | D | E |
| 2 | F | G | H | I/J | K |
| 3 | L | M | N | O | P |
| 4 | Q | R | S | T | U |
| 5 | V | W | X | Y | Z |
El cifrado Bifid utiliza el cuadrado de Polibio, pero añade una capa de complejidad.
Comienza con un mensaje secreto. Elimina los espacios y la puntuación.
plaintext = "ikilledmufasa"Cifra el mensaje utilizando el cifrado de Polibio básico (consulta mi desafío anterior; haz clic derecho y selecciona "abrir en una pestaña nueva"), pero escribe los números en dos filas debajo del mensaje, de la siguiente manera:
| i | k | i | l | l | e | d | m | u | f | a | s | a |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | 2 | 2 | 3 | 3 | 1 | 1 | 3 | 4 | 2 | 1 | 4 | 1 |
| 4 | 5 | 4 | 1 | 1 | 5 | 4 | 2 | 5 | 1 | 1 | 3 | 1 |
Lee los números horizontalmente, de dos en dos:
22 23 31 13 42 14 14 54 11 54 25 11 31Genera el texto cifrado convirtiendo estos nuevos pares de números en letras nuevas utilizando el cuadrado de Polibio.
ciphertext = "ghlcrddyaykal"Crea una función que reciba un texto plano o un texto cifrado y devuelva el texto cifrado o el texto plano correspondiente.
bifid("I killed Mufasa!") ➞ "ghlcrddyaykal"
bifid("ghlcrddyaykal") ➞ "ikilledmufasa"
bifid("hi") ➞ "go"N/A