Cifrado de Hill
En Cifrado de Hill, la codificación se realiza usando la cadena de entrada de una clave y un mensaje, que se convierten en matrices y luego nuevamente en el mensaje codificado.
Crea una función que reciba dos argumentos, key y message, y devuelva el mensaje codificado.
Asigna un número único a cada letra del alfabeto.
a b c d e f g h i j k l m
0 1 2 3 4 5 6 7 8 9 10 11 12
n o p q r s t u v w x y z
13 14 15 16 17 18 19 20 21 22 23 24 25Existen algunas variaciones en las reglas de cifrado. A continuación se describe una versión de las reglas del cifrado:
message = "H& *i"
key = "cats"
hillCipher(message, key) ➞ "OR"Paso 1: Crea una matriz de 2 x 2 con la key proporcionada (La longitud de la clave siempre será = 4). Convierte la clave por filas en una matriz de 2x2 y sustituye las letras por sus respectivas posiciones en el alfabeto, es decir, A=0, B=1, C=2 y así sucesivamente:
key = "cats"
[[ 2 0]
[19 18]]
// c = 2, a = 0, t = 19, s = 18Paso 2: Elimina los espacios y todos los caracteres que no sean letras del mensaje proporcionado:
"Hi"Paso 3: Divide el message en pares de dos y convierte esos pares en matrices de 2x1. Si la longitud de message es un número impar, simplemente agrega una Z al final.
[[7]
[8]]
// H = 7, i = 8Paso 4: Multiplica ambas matrices y calcula el módulo de 26 con la matriz resultante:
[[ 2 0] * [[7] = [[14] = [[14] mod 26
[19 18]] [8]] [277]] [17]]Paso 5: Encuentra las letras correspondientes a las posiciones de la matriz resultante:
eMessage = "OR"
// 14 = O, 17 = "R"Consulta los siguientes ejemplos para comprenderlo mejor:
Ejemplos
hillCipher("H& *i", "cats") ➞ "OR"
hillCipher("mubashir","matt") ➞ "OKMTIHSH"
hillCipher("Five + Seven = Twelve", "math") ➞ "IVSLIGSLAQEECSWR"Notas
- El texto puede contener letras mayúsculas y minúsculas. Estandarízalas y devuelve el mensaje cifrado en letras mayúsculas.
- La longitud de la clave siempre será = 4.