Olá,
Eu defini 2 strings:
0 -> Um texto;
1 -> Uma chave;
Para
cada string, eu gerei uma lista/array/vetor equivalente de números
inteiros, utilizando o valor de cada elemento da string (podemos
entender essa string como uma lista/array/vetor) na tabela ASCII.
Exemplo:
String [0] = "GAROA CRIPTO"
Lista de inteiros = [71, 65, 82, 79, 65, 32, 67, 82, 73, 80, 84, 79]
(Key) String [1] = "CHAVESECRETA"
Lista de inteiros = [67, 72, 65, 86, 69, 83, 69, 67, 82, 69, 84, 65]
O próximo passo foi combinar (fazer um zip) com as duas listas e utilizar XOR para cada par. Algo como:
Lista
com os pares = [(71, 67), (65, 72), (82, 65), (79, 86), (65, 69), (32,
83), (67, 69), (82, 67), (73, 82), (80, 69), (84, 84), (79, 65)]
Resultado do XOR:
[4, 9, 19, 25, 4, 115, 6, 17, 27, 21, 0, 14]
OK, eu sei qual é a chave e tenho essa lista de inteiros...como podemos recuperar a mensagem ?
Algo que eu ainda não compreendi, é como reverter um XOR. Os recursos do Python que eu usei:
"^" - operador XOR, nós podemos importar do módulo operator a função xor;
list comprehension;
ord();
range;
zip;
[ ]'s