Criptografia utilizando o algoritmo XOR Swap
Published: 2022-02-19 11:54:27

Com o recente desenvolvimento do meu website pessoal, pelo qual pretendo trazer diversos conteúdos relacionados a área de computação e TI em geral, fiquei em dúvida sobre qual assunto tocar em um primeiro momento, pensei em abordar temas mais generalistas como GIT, porém decidi deixar o mesmo para um futuro breve.

Diante meus estudos relacionados a minha graduação em Análise e desenvolvimento de sistemas, fui surpreendido com um conteúdo que já havia ouvido falar sobre anteriormente, porém nunca tive a iniciativa de estudar mais a fundo. O assunto pelo qual iremos mergulhar nesse tópico será criptografia por meio do algoritmo de XOR Swap, sei que só de ouvir esse nome já deve ter dado um frio na barriga, porém devo lhe dizer que não é nenhum bicho de sete cabeças, muito pelo contrário, posso prometer que você irá sair desse post não apenas sabendo criptografar qualquer texto desejado, como também curiosidade no que diz respeito a criptografia em um âmbito geral.

Antes de darmos continuidade, há alguns conceitos pelo qual devemos compreender, como a tabela ASCII, acontece que cada caractere pelo qual digitamos como; a, $, 7 e até mesmo o próprio espaço entre as palavras possui um número responsável por representá-lo em uma tabela reconhecida mundialmente, a tabela ASCII, a letra "E" em maiúsculo por exemplo é representada pelo número 69 enquanto o a mesma letra em minúsculo no caso "e" é representada pelo número 101 da tabela.

Com esse breve entendimento sobre ASCII devemos entender como o algoritmo de XOR Swap funcionar basicamente utilizamos ele para verificar se encontra diferença entre binários, por exemplo, se fizermos uma comparação XOR entre o número 1 e 1 iremos ter o retorno de 0, também iremos ter o mesmo resultado caso a comparação seja feita entre 0 e 0, porém caso os inputs sejam diferentes, ou seja, 1 e 0 o resultado referente a comparação irá ser 1, com isso em mente caso seja desejado fazer uma comparação entre os binários A = 0011 e B = 0101 acontecerá a seguinte operação, iremos verificar index por index através de XOR, ou seja o index A(1) e o B(1) que serão respectivamente os números 0 e 0 irão retornar o número 0, logo o index C(1) (Onde C é a chave pela qual estamos codificando em binário) irá ter o valor de 0, após fazermos a comparação com todo o binário executando a comparação, iremos ter o seguinte valor C = 0110.

Após a compreensão dessa operação é perceptível a importância de utilizar os valores representativos da tabela ASCII, digamos que o objetivo é codificar a palavra CASA e a chave pela qual iremos utilizar é OLHO, a primeira etapa a ser realizada é conseguir o número que represente cada letra na tabela ASCII, na tabela ASCII a sequência pela qual representa a palavra CASA é a seguinte; C = 67, A = 65, S = 83, A = 65, agora em relação a palavra OLHO temos a seguinte sequência; O = 79, L = 76, H = 72, O = 79, com isso em mente possuímos agora CASA = (67 65 83 65) e OLHO = (79 76 72 79).

Com essa sequência em mãos, vamos aprender agora a como transformar um número decimal em binário, a operação é bem simples, vamos usar como exemplo o número 67 pelo qual representa a letra "C" na tabela ASCII, iremos dividir esse número por dois até não ser possível mais realizar a divisão, após isso a sequência do resto de cada divisão por dois irá formar o número binário, ex: 67 / 2 = 33 e resta 1, esse número 1 irá para a sequência pelo qual estamos formando o número binário ⇒ (1), agora realizamos novamente a divisão: 33 / 2 = 16 e resta 1 que entra na sequência binária ⇒ (1 1), novamente = 16 / 2 = 8 e resta 0 ⇒ (1 1 0), 8 / 2 = 4 e resta 0 ⇒ ( 1 1 0 0 ), 4 / 2 = 2 e resta 0 ⇒ ( 1 1 0 0 0 ) 2 / 2 = 1 resta 0 ⇒ ( 1 1 0 0 0 0 ), agora que não é mais possível realizar a divisão, obtemos a sequência ( 1 1 0 0 0 0 ) pelo qual representa o binário do decimal 67 que representa a letra "E" na tabela ASCII. 

Agora que já sabemos realizar a transformação para binário, podemos fazer isso com todos os números presentes em nossa sequência, a palavra CASA irá ter a sequência = ( 110000 1000001 1010011 1000001 ) enquanto a palavra OLHO irá ter a seguinte sequência = ( 100111 1001100 1001000 1001111 ), agora que temos a sequência de binários, é possível realizar a comparação de XOR Swap entre eles, gerando a sequência = (010111 0001101 0011011 0001110), agora que temos a sequência gerada através da comparação XOR entra a palavra CASA e a chave criptográfica OLHO, podemos transformar essa sequência em decimal, para isso irei citar o seguinte vídeo que ensina fazer essa transformação de maneira mais fácil: https://www.youtube.com/watch?v=zToihF2FE9I, após obtermos a sequência de decimais da maneira ensinada no vídeo, iremos obter a seguinte sequência = ( 23 13 27 14), agora voltando para a nossa tabela ASCII e colocando os caracteres disponíveis no lugar dos decimais iremos ter o seguinte resultado: ( (etb) (cr) (esc) (so) ) e essa é a palavra que foi criptografa através da comparação de XOR Swap entre a palavra CASA e a chave criptográfica OLHO.

Muito obrigado a você que leu até aqui, peço perdão caso haja algum erro não deixe de entrar em contato comigo diante as redes sociais, a maioria dos meus artigos são escritos como maneira de estudar o assunto abordado, então já afirmo que não sou um especialista que todo o conteúdo aqui escrito é apenas de cunho educacional para minha pessoa, fiquem bem e até a próxima!