Want to make interactive content? It’s easy in Genially!

Over 30 million people build interactive content in Genially.

Check out what others have designed:

Transcript

Ana Teixeira nº1 Turma:10ºGPSI-B Módulo: 7Disciplina: Programação

Cifra Vigenère

Começar >

>

>

O Que é a Cifra Vigenère?

O meu Código

Índice

00

01

Como Cifrar a Mensagem?

03

04

05

Webgrafia

02

Conclusão

Como Decifrar a Mensagem?

>

>

O Que é a Cifra Vigenère?

A cifra de Vigenère, também conhecida como cifra polialfabética de Vigenère, é um método de criptografia que utiliza uma série de diferentes cifras de César baseadas em letras de uma palavra-chave.

Cifra de Vigenère

<01>Como funciona?

Começar >

>

>

Para cada letra da mensagem, localizar a linha correspondente à letra da palavra-chave atual e identificar a letra que a substitui na tabela.

3

2

Escolher uma palavra-chave secreta.

1

Como Cifrar uma Mensagem?

Abrir a tabela de Vigenère, cada uma representando o alfabeto deslocado por uma posição diferente (de 0 a 25).

4

Repitir os passos 2 e 3 para cada letra da mensagem, usando a próxima letra da palavra-chave a cada vez.

>

>

2

É necessário conhecer a palavra-chave original.

1

Como Decifrar uma Mensagem?

Seguir os mesmos passos da encriptar, mas usando a tabela na ordem inversa, ou seja, buscar a letra original na tabela com base na letra encriptada e na letra da palavra-chave.

Começar>

Passo a Passo

<02>O Meu Código

>

>

char letraInicial = 'A'; -> definir a letra inicial usada para as contas, neste caso, 'A'char mat[TAM][TAM]; -> declarar uma matriz de caracteres (tabela) com dimensão TAM x TAMstring texto; -> declarar uma string que irá armazenar o texto a ser encriptadostring password; -> declarar uma string que irá armazenar a senha definida pelo usuário

// Definir e declarar

<iostream>: Biblioteca para entrada e saída<string>: Biblioteca para manipulação de strings<fstream>: Biblioteca para manipulação de ficheirosTAM 27: Define uma constante chamada TAM com valor 27

// Bibliotecas e define

Linha 16 -> Ciclo "for" para iterar sobre as linhas da matrizLinha 17-> Ciclo "for" para iterar sobre as colunas da matriz Linha 18 -> Preenche a matriz com caracteres baseados na cifra de VigenèreLinha 22 -> Ciclo para imprimir a tabela criadaLinha 23 -> Itera sobre cada coluna da linha atualLinha 24 -> Imprime o caractere na posição [i][j]Linha 26 -> Imprime uma nova linha após cada linha da matriz

//Função para inicializar a tabela de Vigenère

>

>

>

>

Linha 33 -> Declarar uma string para armazenar o texto encriptadoLinha 34 -> Ciclo para iterar sobre cada caractere do textoLinha 35 -> Obter o caractere atual do textoLinha 36 -> Obter o caractere correspondente da senhaLinha 37 -> Verificar se o caractere é uma letra maiúsculaLinha 38 -> Aplicar a fórmula de encriptação para letras maiúsculas

//Função para encriptar texto com a Cifra de Vigenère

Linha 39 -> Verificar se o caractere é uma letra minúsculaLinha 40 -> Aplicar a fórmula de encriptação para letras minúsculasLinha 42 -> Adicionar o caractere encriptado à string de texto encriptadoLinha 44 -> Retornar o texto encriptado

Linha 50 -> Declarar uma string para armazenar o texto desencriptadoLinha 51-> Ciclo para iterar sobre cada caractere do texto encriptado Linha 52 -> Obter o caractere atual do texto encriptadoLinha 53 -> Obter o caractere correspondente da senha, usando o operador módulo para ciclosLinha 54 -> Verificar se o caractere é uma letra maiúsculaLinha 55 -> Aplicar a fórmula de desencriptação para letras maiúsculas

//Função para desencriptar texto com a Cifra de Vigenère

>

>

Linha 56 -> Se o resultado estiver fora do intervalo de letras maiúsculasLinha 59 -> Verificar se o caractere é uma letra minúsculaLinha 60 -> Aplicar a fórmula de desencriptação para letras minúsculasLinha 61 -> Se o resultado estiver fora do intervalo de letras minúsculasLinha 62 -> Ajustar o valor adicionando 26Linha 65 -> Adicionar o caractere desencriptado à string de texto desencriptadoLinha 67 -> Retornar o texto desencriptado

//Função para desencriptar texto com a Cifra de Vigenère

>

>

>

>

Linha 73 -> Inicializa a tabela de VigenèreLinha 74 -> Declaração de variáveis para armazenar o nome do ficheiro, a chave, o texto encriptado, o texto desencriptado e o texto originalLinha 75 -> Declara um objeto de entrada de ficheiro para ler dados de um ficheiroLinha 76 -> Declara um objeto de saída de ficheiro para escrever dados num ficheiroLinha 77 -> Declaração de variável para armazenar a opção do menu escolhida pelo usuário

// Int main

>

>

Linha 79 -> O ciclo do-while executa um bloco de código pelo menos uma vez e repete enquanto a condição especificada for verdadeira.Linha 80 -> Imprime o menu de opçõesLinha 81 ->Opção para ler o texto de um ficheiroLinha 82 -> Opção para encriptar o texto lidoLinha 83 -> Opção para guardar o texto encriptado num ficheiroLinha 84 -> Opção para desencriptar o texto encriptadoLinha 85 -> Opção para sair do programaLinha 86 -> Lê a opção escolhida pelo usuário

//int main- menu(do-while)

>

>

Linha 88 -> Estrutura switch para tratar as diferentes opções do menuLinha 89 -> Case 1: Ler o texto de um ficheiroLinha 90 -> Pergunta o nome do ficheiro ao usuárioLinha 91 -> Lê o nome do ficheiroLinha 92 -> Abre o ficheiro para leituraLinha 93 -> Verifica se houve erro ao abrir o ficheiroLinha 94 -> Imprime mensagem de erroLinha 95 -> Sai do case 1 Linha 97 -> Declara uma variável para armazenar cada linha lida do ficheiroLinha 98 -> Inicializa a string textoLinha 99 -> Lê linha por linha do ficheiroLinha 100 -> Concatena cada linha lida à string texto

//Int main - switch(case 1)

Linha 102 -> Fecha o ficheiroLinha 103 -> Imprime o texto lidoLinha 104 -> Sai do case 1

>

>

Linha 107 -> Case 2: Encriptar textoLinha 108 -> Verifica se o texto foi lidoLinha 109 -> Imprime mensagem de erroLinha 112 -> Solicita a chave de encriptação ao usuárioLinha 113 -> Lê a chaveLinha 114 -> Encripta o texto usando a chave fornecidaLinha 115 -> Imprime o texto encriptado

//Int main - switch(case 2)

>

>

Linha 119 -> Case 3: Guardar o texto encriptado no ficheiroLinha120 -> Verifica se o texto foi encriptadoLinha 125 -> Lê o nome do ficheiroLinha 126 -> Abre o ficheiro para a escritaLinha 127 -> Verifica se houve erro ao abrir o ficheiroLinha 131 -> Escreve o texto encriptado no ficheiroLinha 132 -> Fecha o ficheiro

//Int main - switch(case 3)

>

>

Linha 137 -> Case 4: Desencriptar o textoLinha138 -> Verifica se o texto foi encriptadoLinha 143 -> Lê a chave Linha 144 -> Desencripta o texto usando a chave fornecidaLinha 145 -> Imprime o texto desencriptadoLinha 146 -> Sai do case 4

//Int main - switch(case 4)

>

>

Linha 149 -> Case 5: SairLinha 150 -> Imprime mensagem de saídaLinha 151 -> Sai do case 5 Linha 153 -> Case padrão: opção inválidaLinha 159 -> Continua a exibir o menu até que a opção 5 seja escolhidaLinha 146 -> Retorna 0 para indicar que o programa terminou com sucesso

//Int main - switch(case 5)/Fim do código

>

>

// Conclusão

O programa terminou com sucesso preenchendo todos os requistos pedidos pelo professor.

https://studio.code.org/s/vigenere/lessons/1/levels/1

3

https://pt.wikihow.com/Codificar-e-Decodificar-Usando-a-Cifra-de-Vig%C3%A8nere

2

https://pt.wikipedia.org/wiki/Cifra_de_Vigen%C3%A8re

1

<Webgrafia>

>

Obrigado