Skip to content
This repository has been archived by the owner on Jul 6, 2024. It is now read-only.

Latest commit

 

History

History

criptografia

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Laboratório de Algoritmos e Estruturas de Dados 1

Descrição do exercício "Criptografia"

Em grego, cryptos significa secreto, oculto. A criptografia estuda os métodos para codificar uma mensagem de modo que somente seu destinatário legítimo consiga interpretá-la. É a arte dos “códigos secretos” (Coutinho, 2015).

Uma das técnicas de criptografia mais simples e conhecida consite em substituir cada letra da mensagem por outra, que se apresenta no alfabeto abaixo dela um número fixo de vezes. Conta a história que Júlio César (100-44 a.C.) utilizava este código nas mensagens enviadas a seus generais.

A transformação pode ser representada alinhando-se dois alfabetos: o alfabeto cifrado e o alfabeto normal rotacionado à direita ou esquerda por um número de posições. Por exemplo, a seguir está uma cifra de César usando uma rotação à esquerda de três posições:

Normal:  ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cifrado: DEFGHIJKLMNOPQRSTUVWXYZABC

Embora cifra de César seja facilmente decifrada e na prática não ofereça essencialmente nenhuma segurança na comunicação, é frequentemente incorporada como parte de esquemas mais complexos de criptografia (Wikipedia, 2019).

Este exercício consiste em ler uma mensagem criptografada de um arquivo texto e imprimir a mensagem descriptografada na saída padrão. A técnica de criptografia será a de códigos em bloco, que consiste em subdividir a mensagem em blocos de várias letras e embaralhar esses blocos. Antes, porém, será utilizada a cifra de César com rotação à esquerda de cinco posições.

Por exemplo, considere a mensagem AMO LIVROS. Para codificá-la seguiremos os seguintes passos:

  • Substituir os espaços pelo símbolo # e completar a mensagem com este mesmo símbolo no final, caso tenha uma quantidade ímpar de letras;
  • Substituir cada letra por outra, utilizando a cifra de César com uma rotação à esquerda de cinco posições;
  • Subdividir a mensagem em blocos de n letras (neste caso n=2);
  • Refletir cada bloco;
  • Permutar os blocos trocando o primeiro com o último, o terceiro com a antepenúltimo, e assim por diante, mas deixando os outros como estão.

Aplicando isto, passo a passo, à mensagem acima, obtemos primeiro:

AMO#LIVROS

Depois usamos a cifra de César:

FRT#QNAWTX

Separamos em blocos de 2 letras:

FR-T#-QN-AW-TX

em seguida:

RF-#T-NQ-WA-XT

E, finalmente:

XT-#T-NQ-WA-RF

Que nos dá como mensagem codificada:

XT#TNQWARF

Use o método explicado para poder decodificar a mensagem contida em um arquivo texto cujo nome será lido da entrada padrão. Para simplificar, foram eliminados acentos e pontuação. As letras maiúsculas e minúsculas do texto deverão ser mantidas.

A saída do programa deverá seguir o padrão abaixo, mas lembre-se que o seu programa será testado com arquivos distintos:

Digite o nome do arquivo: mensagem.txt

--------------------
Mensagem codificada:
--------------------
tinhkn#ftyH#y#wfxfitufjxmsfk#jrqjzjytrhjr#fwfiknxji#v#sjx#nhjy#w#f#jsju#t#xjcjjih#wkfw#F

----------------------
Mensagem decodificada:
----------------------
A cifra de Cesar pode ser facilmente decifrada mesmo que se tenha apenas o texto cifrado

Referências: