Buscar

Aps 2º semestre unip

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE PAULISTA
DAVID DE O. NOGUTI RA: D286HE-3
DIEGO COSTA A. RA: D28IFI-4
NATAN BOLONI B. RA: D47BFF-9
GUSTAVO DOS S. RA: N123JE-0
WESLLEY LEANDRO A. RA: N21386-8
CRIPTOGRAFIA
	
SÃO PAULO
2017
DAVID DE O. NOGUTI RA: D286HE-3
DIEGO COSTA A. RA: D28IFI-4
NATAN BOLONI B. RA: D47BFF-9
GUSTAVO DOS S. RA: N123JE-0
WESLLEY LEANDRO A. RA: N21386-8
CRIPTOGRAFIA
Trabalho apresentado ao curso de
 Ciência da computação. 
Universidade Paulista – Cidade Universitária. 
Orientador: Prof. Genivaldo
São Paulo
2017
OBJETIVO PROPOSTO
OBJETIVOS GERAIS
O objetivo do trabalho é desenvolver um programa que consiga criptografar e descriptografar uma mensagem qualquer inserida no computador.
OBJETIVOS ESPECÍFICOS
Desenvolver um programa de criptografia utilizando uma técnica já existente, no caso a Cifra de César, uma cifra de chave simétrica e simples.
LISTA DE FIGURAS
FIGURA 1:	Cifra de César..........................................................................................8
SUMÁRIO
OBJETIVO PROPOSTO..............................................................................................	0
INTRODUÇÃO.............................................................................................................	0
1. CONCEITO DE CRIPTOGRAFIA.............................................................................	1
2. TÉCNICAS CRIPTOGRÁFICAS MAIS UTILIZADAS...............................................	2
2.1 CHAVE SIMÉTRICA...............................................................................................	2
2.1.1 DES (Data Encryption Standard).....................................................................	2
2.1.2 IDEA (International Data Encryption Algorithm)…………………………………	3
2.1.3 RC (Ron's Code ou Rivest Cipher)………………………………………………..	3
2.1.4 AES (Advanced Encryption Standard)……………………………………………	3
2.2 CHAVE ASSIMÉTRICA..........................................................................................	4
2.2.1 RSA (Rivest, Shamir and Adleman)………………………………………………	4
3. REDES SEM FIO.....................................................................................................	4
3.1 WEP.......................................................................................................................	4
3.2 WPA E WPA2.........................................................................................................	5
4. DISSERTAÇÃO........................................................................................................	5
4.1. ESTRUTURAÇÃO, CONCEITOS E FUNDAMENTAÇÃO....................................	5
4.2. BENEFÍCIOS EM RELAÇÃO ÀS TÉCNICAS ANTERIORES...............................	6
4.3. APLICAÇÕES QUE FAZEM OU FIZERAM USO DA TÉCNICA...........................	7
4.4. COMPARAÇÃO ENTRE ESTA TÉCNICA E OUTRAS CONHECIDAS................	7
4.5. VULNERABILIDADE FALHAS..............................................................................	7
4.6. MELHORIAS PROPOSTAS E IMPLEMENTADAS...............................................	8
5. PROJETO (ESTRUTURA) DO PROGRAMA...........................................................	9
6. CONSIDERAÇÕES FINAIS...................................................................................	13
7. BIBLIOGRAFIA.......................................................................................................	14
INTRODUÇÃO
A criptografia é usada em vários aspectos no meio tecnológico, transações bancarias, senhas de usuários ou em até alguma mensagem secreta. Nós não vemos, mas ela está presente para garantir a segurança da informação que transita pela grande rede de computadores, existem vários tipos de criptografia que são usados em diferentes casos desde o mais comum até o mais complexo que precisa de alta segurança. Esse método de segurança é utilizado porque há muitas pessoas mal-intencionadas que querem roubar informações sigilosas de outros, assim o jeito de garantir que o dado vai chegar ao destinatário sem ser interceptado e decifrado é criptografando o mesmo.
Quando falamos em criptografia pensamos em algo complexo e difícil, e é, o principal motivo dela existir é esse, o de não deixar brechas para que saibam do que está sendo transmito de um lugar para outro ou o que está armazenado em algum local. Ela está aí para garantir nossa segurança em tudo o que fizermos na grande rede de computadores.
CONCEITO DE CRIPTOGRAFIA
A criptografia é usada a muito tempo pela humanidade, o modo de criptografia era transformar uma letra em outra letra ou símbolo que a outra pessoa também conhecia assim as duas tinhas como saber o que estava escrito na carta. Hoje não é muito diferente, o princípio é o mesmo.
Como foi citado existem vários tipos de criptografia de dados, um dos mais comuns e fáceis de usar e entender é a Cifra de Cesar que consiste basicamente em tocar algum caractere da tabela ASCII por outro de acordo com o seu número representante somado a chave. 
A criptografia não é usada somente para transferência de dados na internet, ela usada também para assegurar dados de um armazenamento local. Vale ressaltar que a criptografia não impede de o dado ser interceptado e sim garante a autenticidade e a dificuldade para decifra-lo. 
	
TÉCNICAS CRIPTOGRÁFICAS MAIS UTILIZADAS
CHAVE SIMÉTRICA
A chave simétrica é o tipo de chave mais simples, pois utiliza apenas uma única chave tanto para realizar a criptografia quanto a descriptografia. Dentre os algoritmos de criptografia mais comuns que utilizam esse tipo de chave estão o DES, o IDEA, o RC e o AES.
DES (Data Encryption Standard)
A criptografia Data Encryption Standard, chamada de DES, é uma criptografia de chave simétrica. Foi criada na década de 70 pelo National Bureau of Standards junto ao National Security Agency, com o intuito de criar um padrão para a proteção de dados. O primeiro protótipo criado foi feito pela IBM (International Business Machines), que deram a esse algoritmo o nome de LUCIFER. Em 1976, o DES foi definido como norma federal nos EUA.
 O Data Encryption Standard utiliza uma chave feita de 56 bits somado a 8 bits de paridade, ou seja, a criptografia é realizada em blocos de 64 bits. O processo de cifragem ocorre em algumas etapas, a reordenação dos bits, a duplicação e reordenação de poucos bits, e finalmente a retirada de alguns, para que a saída da criptografia seja do mesmo tamanho que a entrada.
IDEA (International Data Encryption Algorithm)
O algoritmo IDEA foi inventado em 1990 na Europa por James L. Massey e Xueija Lai. É um algoritmo simétrico que utiliza chave de 128 bits. Ele é usado tanto para criptografia quanto para descriptografia e seu sistema de encriptação é através do ajuntamento de grupos algébricos distintos, são eles: Xor, multiplicação módulo 2 16 +1 e Adição módulo 216. O texto é dividido em 4 blocos de 16 bits e são feitas várias operações conjuntas até o texto ser totalmente encriptado.
RC (Ron's Code ou Rivest Cipher)
A criptografia de nome Rivest Cipher (RC), foi criada por Ronald Rivest, um dos fundadores da empresa RSA Security. A RC não é uma única cifra, existem diversos tipos de Rivest Cipher, desde a RC1 que nunca foi publicada, a RC3 que teve um problema antes mesmo de ser usada, até a RC6 que foi a última cifra criada por Ronald. Cada uma destas cifras tinham aspectos diferentes e grande parte não tinha relações, a RC2 por exemplo era uma cifra de bloco que utilizava uma chave variável de até 128 bytes e trabalhava com blocos de 64 bits, a RC4 foi a cifra de fluxo mais utilizada do mundo e aplicada frequentemente para proteger comunicações por ser extremamentesimples, a RC5 é uma cifra de bloco que trabalha com blocos de 32, 64 ou 128 bits, e a RC6 que foi baseada na sua antecessora e utiliza blocos de 128 bits e aceita chaves de 128, 192 e 256 bits.
AES (Advanced Encryption Standard)
O Advanced Encryption Standard (AES) foi produto de uma competição que ocorreu de 1997 até 2000, promovida pelo National Institute of Standards and Technology dos EUA para substituir o DES que já vinha sendo utilizado há muitos anos. 
Em 1997 o processo seletivo começou e se arrastou por 3 anos. Para encontrar um substituto ao DES, algumas especificações foram estabelecidas, a cifra teria que ser simétrica e de bloco, capaz de ter aumento na chave, pudesse ser implementável em hardware ou software entre outras especificações. Após cumpridas as especificações, segundo Leopoldo A.P. Mathias (2005), era julgado a segurança, ou seja, a dificuldade da criptoanálise, a eficiência computacional, requisitos de memória, adequação a hardware e software, e a simplicidade da cifra. Em 2000 foi tido como vitorioso, o algoritmo Rijndael criado por Vincent Rijment e Joan Daemen, que era uma cifra de blocos, com chave e blocos, ambos de 128, 192 ou 256 bits.
CHAVE ASSIMÉTRICA
A chave assimétrica trabalha com duas chaves, uma privada e a outra pública. Toda mensagem enviada é codificada com uma chave pública, e só pode ser decodificada com uma chave privada, ou seja, apenas a chave privada decodifica a chave pública e vice-versa. Dos algoritmos mais comuns que utilizam esse tipo de chave podemos citar o RSA e o ElGamal.
RSA (Rivest, Shamir and Adleman)
O sistema de criptografia RSA foi inventado na década de 70 por dois cientistas da computação e um matemático, eles Ronald Rivest, Adi Shamir e Leonard Adleman trabalhavam no MIT (Massachusetts Institute of Technology). Como esse tipo de criptografia é assimétrico o RSA funciona com o princípio matemático da multiplicação de números primos para a geração das chaves e para descobrir isso é através da fatoração do mesmo, porem quando estamos falando de números extremamente grandes torna-se impossível descobrir a mensagem pois teríamos que fatorar todo esse número e depois descobrir os números primos que foram multiplicados e isso levaria anos e anos para ser descoberto.
REDES SEM FIO
WEP
O WEP (Wired-Equivalent Privacy) é um dos algoritmos de segurança mais usados no mundo foi um dos primeiros inventado para proteção de redes sem fio (wi-fi), ele encripta os dados que passam pela rede assim dificultando sua descoberta, porem sua vulnerabilidade é muito grande como se trata de um sistema 128 bits o número de combinações de palavras passe ficam limitados assim facilitando quebra-lo com um simples software malicioso. Por esse motivo desde 2004 ele deixou de receber suporte assim deixando de ser um protocolo padrão.
WPA E WPA2
Por conta dos problemas de segurança do WEP, foi desenvolvido o padrão de segurança 802.11i que, durante sua produção, foi criado como melhoria ao WEP, o WPA que serviu de medida emergencial até o término da produção do 802.11i. O WPA foi uma melhoria que não exigia a troca de hardware para seu funcionamento, ou seja, todos os aparelhos que continham o WEP poderiam utilizar o sistema caso o firmware do mesmo fosse atualizado.
 Esse padrão deixou de usar vetores de inicialização e uso de chave fixa e passou a usar uma chave que era trocada periodicamente, o que trouxe maior segurança, porém, ainda é possível quebrar chaves de poucos caracteres, mas ao passar de 20 caracteres, a demora para a quebra desta chave seria enorme o que tornaria o ato inviável.
 Em 2004 a versão final do padrão 802.11i foi validada e foi assim criado o WPA2, que tinha como principal diferença em relação ao WPA, o uso do AES, que é mais seguro e também mais pesado que o algoritmo RC4 utilizado pelo antecessor.
DISSERTAÇÃO
 ESTRUTURAÇÃO, CONCEITOS E FUNDAMENTAÇÃO
5.1.2 CIFRA DE CÉSAR
A cifra de césar é um tipo de criptografia muito antigo usado pelo imperador romano para enviar mensagens que não poderiam ser lida por outra pessoa, esse tipo de criptografia é composto por substituição monoalfabética, onde cada letra será substituída por outra no alfabeto.
De acordo com historiadores, Júlio César usava essa forma de criptografia com o intuito de enviar mensagens aos seus generais sem o risco delas acabarem entregando eles caso fossem interceptadas, o método que ele usava era de a cada letra pular 3 casas no alfabeto, fazendo assim o A ser o D e assim por diante.
Figura 1: Cifra de César (Por Cepheus, https://commons.wikimedia.org/wiki/File:Caesar3.svg)
A cifra de césar é composta por substituição monoalfabética, onde cada letra será substituída por outra no alfabeto.
BENEFÍCIOS EM RELAÇÃO ÀS TÉCNICAS ANTERIORES
As técnicas anteriores utilizavam métodos parecidos, porém com maior facilidade de ser decifrada, pois pegava a primeira letra do alfabeto e trocava pela última e assim sucessivamente.
Na cifra de César, uma letra é trocada por outra de acordo com a chave que o usuário escolher, sendo ela 5, a letra A seria trocada pela letra F. Por conta de ser um processo simples de ser implementado em software, o código acaba sendo enxuto e de rápido processamento, não necessitando de um aparelho de alto desempenho.
Esta cifra traz simplicidade de implementação se comparado com outras cifras que, por serem mais complexas, deixam o código mais extenso e pesado.
APLICAÇÕES QUE FAZEM OU FIZERAM USO DA TÉCNICA
A cifra de Cesar hoje não é usada em quase nenhum tipo de prevenção a segurança pelo motivo de ser facilmente quebrada. 
COMPARAÇÃO ENTRE ESTA TÉCNICA E OUTRAS CONHECIDAS
A cifra de césar é monoalfabética e funciona da seguinte maneira, cada caractere possui um código numérico na tabela ASCII, a cifra passa caractere por caractere do texto somando o seu valor representante pela chave numérica que foi definida, e o valor resultante é sua criptografia. Em sua descriptografia ocorre o processo inverso, ou seja, ao invés de somar a chave ele a subtrai.
Uma cifra de substituição semelhante a cifra de césar é a cifra de Vigenère. A utilização de uma chave mais longa é a diferença entre elas. A criptografia é realizada através de uma tabela com o abecedário escrito 26 vezes em linhas diferentes, deslocando uma letra para a esquerda em relação a letra anterior.
VULNERABILIDADE FALHAS
Apesar de ter sido muito útil na época em que foi criada, a cifra de césar, por possuir apenas uma chave monoalfabética, ao descobri-la já seria possível descriptografar o texto todo, o que torna esse tipo de criptografia fácil de ser quebrada. Além disso, por ser uma técnica que criptografa caractere por caractere, a mensagem cifrada resulta em um texto com o mesmo número de caractere, deixando-a menos segura.
E por ser uma das primeiras técnicas utilizadas, basta um conhecimento básico em criptografia para conseguir desvendá-la.
 MELHORIAS PROPOSTAS E IMPLEMENTADAS
Foi adicionado um esquema na chave do código, onde a soma do caractere com a chave ficaria entre 11 e 127, fazendo com que se ficasse menor que 11 o código automaticamente somava +117 e se for maior que 127 subtrai 117, fazendo com que a criptografia sempre trabalhe com dentro de uma área dentro da tabela ascii que não possua caracteres em branco, ou seja evitando bugs na mesma.
CONSIDERAÇÕES FINAIS
Com a realização dessa APS foi possível ampliar o conhecimento do grupo sobre a criptografia em geral, e mostrar com mais clareza seus conceitos e aplicações, mais especificamente a cifra de césar que foi a técnica criptográfica utilizada na realização deste trabalho.
O objetivo geral deste projeto foi desenvolver um programa capaz de realizar a criptografia e a descriptografia de um texto inserido. Para esse processo foi utilizado a cifra de césar, que consiste em um método simples, porém eficaz tendo em vista o objetivo de aprofundar o conhecimento e facilitar ocompreendimento da área criptográfica.
Ao término do projeto obteve-se êxito, pois apesar das dificuldades na criação do programa, que inclusive serviu para reforçar ainda mais as pesquisas e abranger o conhecimento do tema, seu funcionamento no final proporcionou uma grande gratificação para o grupo.
BIBLIOGRAFIA
Daniela Gonzáles,Tipos de criptografia, Disponível em: http://idgnow.com.br/seguranca/2007/10/05/idgnoticia.2007-10-05.1318584961 (acessado em 18/11/2017 às 17:00)
Ericksen Viana, Criptografia, conceito e aplicações. Disponível em: < https://www.devmedia.com.br/criptografia-conceito-e-aplicacoes-revista-easy-net-magazine-27/26761%3E (acessado em 13/05/2018 às 20:09)
 Cesar Augusto Romagnolo, O que é criptografia? Disponível em: https://www.oficinadanet.com.br/artigo/443/o_que_e_criptografia (acessado em 13/05/2018 às 20:11)
Laís Berlatto, DES. Disponível em: https://pt.slideshare.net/LaisBerlatto2/data-encryption-standard-des-3-des-triplo-des (acessado em 13/05/2018 às 20:15)
Leopoldo A. P. Mathias, AES. Disponível em: https://www.gta.ufrj.br/grad/05_2/aes/ (acessado em 13/05/2018 às 20:12)
Carlos E. Morimoto, Redes wireless, disponível em: http://www.hardware.com.br/tutoriais/padroes-wireless/pagina8.html (acessado em 13/05/2018 às 20:14)
 Felipe Demartini, WEP WPA WPA2, Disponível em: https://www.tecmundo.com.br/wi-fi/42024-wep-wpa-wpa2-o-que-as-siglas-significam-para-o-seu-wifi-.htm (acessado em 13/05/2018 às 20:17)
 ANEXOS
 PROJETO (ESTRUTURA) DO PROGRAMA.
//Inclusão de bibliotecas
#include <stdio.h>		
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
int chave;	//Declara váriavel chave
char frase [128];	//Declara vetor frase com 128 índices
void LER_CHAVECRIPT(){ //Início da função de leitura da chave de criptografia 
	inicio:	 //Define ponto para comando goto	
	system("cls");	//Limpa console
	printf("\n\t\t\t --> Char Is Hard Program <--"); //Imprime no console
	printf("\n\n Digite uma chave numérica de 1 a 116 e pressione a tecla Enter: "); //Imprime no console
	scanf("%d",&chave); //Lê tecla digitada e armazena na variável chave
	setbuf(stdin, NULL); //Limpa buffer do teclado
	if(chave==0){ //Verifica se a variável chave é igual a 0
		printf("\n\n Chave inválida!! Aperte qualque tecla e tente novamente..."); //Imprime no console
		getch(); //Captura tecla
		goto inicio; //Retorna para linha inicio
	}
}
void LER_CHAVEDESCRIPT(){ //Início da função de leitura da chave de descriptografia
	inicio: //Define ponto para comando goto	
	system("cls"); //Limpa console
	printf("\n\t\t\t --> Char Is Hard Program <--"); //Imprime no console
	printf("\n\n Digite sua chave numérica de 1 a 116 e pressione a tecla Enter: "); //Imprime no console 
	scanf("%d",&chave); //Lê tecla digitada e armazena na variável chave
	setbuf(stdin, NULL); //Limpa buffer do teclado 
	if(chave==0){ //Verifica se a variável chave é igual a 0
		printf("\n\n Chave inválida!! Aperte qualquer tecla para tentar novamente..."); //Imprime no console
		getch(); //Captura tecla
		goto inicio; //Retorna para linha inicio
	}
}
void LER_FRASE(){ //Início da função de leitura da frase
	inicio: //Define ponto para comando goto	
	printf("\n\t --> Char Is_Hard Program <--"); //Imprime no console
	printf("\n\n Digite uma frase de até 128 digitos: "); //Imprime no console
	gets(frase); //Lê texto digitado e armazena na variável frase
	if(strlen(frase)>128){ //Verifica se o tamanho da frase é maior que 128
		printf("\n\n Frase excede o limite máximo de characteres!"); //Imprime no console
		system("cls"); //Limpa console
		goto inicio; //Retorna para linha inicio
	}
}
void CRIPTOGRAFAR(){ //Início da função de criptografia
	int frase_cript; //Declara váriavel que armazenará o valor ASCII de cada caractere do texto 
	system("cls"); //Limpa console
	LER_CHAVECRIPT(); //Executa função de leitura da chave de criptografia
	system("cls"); //Limpa console
	LER_FRASE(); //Executa função de leitura da frase
	system("cls"); //Limpa console
	printf("\n\t\t\t --> Char Is Hard Program <--"); //Imprime no console	
	printf("\n\n Texto criptografado com sucesso!!"); //Imprime no console
	printf("\n\n\n Resultado da criptografia: "); //Imprime no console
	for(int i=0;i<strlen(frase);i++){ //Executa um loop até passar por todos carcteres da frase
		frase_cript = (int)frase[i] + chave; //Váriavel frase_cript recebe o valor ASCII de todos o caracteres da frase somados com a chave
		if(frase_cript > 127) frase_cript -= 117; //Verifica se o tamanho da frase junto com a chave excede 127 e caso sim, subtrai 117
		printf("%c", (char)frase_cript); //Imprime todos os caracteres criptografados
 }
}
void DESCRIPTOGRAFAR(){ //Início da função de descriptografia
	int frase_descript; //Declara váriavel que armazenará o valor ASCII de cada caractere do texto 
	system("cls"); //Limpa console
	LER_CHAVEDESCRIPT(); //Executa função de leitura da chave de descriptografia
	system("cls"); //Limpa console
	LER_FRASE(); //Executa função de leitura da frase
	system("cls"); //Limpa console
	printf("\n\t\t\t --> Char Is Hard Program <--"); //Imprime no console	
	printf("\n\n Texto descriptografado com sucesso!!"); //Imprime no console
	printf("\n\n\n Resultado da descriptografia: "); //Imprime no console
	for(int i=0;i<strlen(frase);i++){ //Executa um loop até passar por todos carcteres da frase
		frase_descript = (int)frase[i] - chave; //Váriavel frase_descript recebe o valor ASCII de todos o caracteres da frase subtraídos com a chave
		if(frase_descript < 11) frase_descript += 117; //Verifica se o tamanho da frase subtraido com a chave é menor que 11 e caso sim, soma 117
		printf("%c", (char)frase_descript); //Imprime todos os caracteres descriptografados
 }
}
void MENU_CRIPTOGRAFAR(){ //Início da função do menu de criptografia
	int opcao; //Declara váriavel opcao
	inicio: //Define ponto para comando goto	
	printf("\n\t\t\t --> Char Is Hard Program <--"); //Imprime no console	
	CRIPTOGRAFAR(); //Executa função de criptografia
	printf("\n\n\n"); //Pula 3 linhas
	system("pause"); //Pausa o programa até que uma tecla seja pressionada
	system("cls"); //Limpa console
	printf("\n\t --> Char Is_Hard Program <--"); //Imprime no console	
	printf("\n\n 1 - Realizar outra criptografia"); //Imprime no console		
	printf("\n\n 2 - Voltar para o menu"); //Imprime no console	
	printf("\n\n 3 - Sair"); //Imprime no console	
	inicio2: //Define ponto para comando goto	
	printf("\n\n Informe a opção desejada: "); //Imprime no console	
	scanf("%d", &opcao); //Lê tecla digitada e armazena na variável opcao
	setbuf(stdin,NULL); //Limpa buffer do teclado
	switch(opcao){ //Verifica o valor da variável opcao
		case 1: //Caso seja 1
			goto inicio; //Retorna para linha inicio
			break; //Para de executar comando switch
		case 2: //Caso seja 2
			break; //Para de executar comando switch
		case 3: //Caso seja 3
			printf("\n\n Finalizando...\n\n"); //Imprime no console	
			exit(0); //Sai do programa
			break; //Para de executar comando switch
		default: //Caso não seja nenhum dos citados acima
			printf("\n\n Opção inválida!!"); //Imprime no console	
			getch(); //Captura tecla
			goto inicio2; //Retorna para linha inicio2
	}
}
void MENU_DESCRIPTOGRAFAR(){ //Início da função do menu de descriptografia
	int opcao; //Declara váriavel opcao
	inicio: //Define ponto para comando goto	
	printf("\n\t\t\t --> Char Is Hard Program <--"); //Imprime no console	 
	DESCRIPTOGRAFAR(); //Executa função de descriptografia
	printf("\n\n\n"); //Pula 3 linhas
	system("pause"); //Pausa o programa até que uma tecla seja pressionada
	system("cls"); //Limpa console 
	printf("\n\t--> Char Is_Hard Program <--"); //Imprime no console	
	printf("\n\n 1 - Realizar outra descriptografia"); //Imprime no console	
	printf("\n\n 2 - Voltar para o menu"); //Imprime no console	
	printf("\n\n 3 - Sair"); //Imprime no console	
	inicio2: //Define ponto para comando goto	
	printf("\n\n Informe a opção desejada: "); //Imprime no console	
	scanf("%d", &opcao); //Lê tecla digitada e armazena na variável opcao
	setbuf(stdin,NULL); //Limpa buffer do teclado
	switch(opcao){ //Verifica o valor da variável opcao
		case 1: //Caso seja 1
		goto inicio; //Retorna para linha inicio
		break; //Para de executar comando switch
	case 2: //Caso seja 2
		break; //Para de executar comando switch
	case 3: //Caso seja 3 
		printf(" \n\nFinalizando...\n\n"); //Imprime no console	
		exit(0); //Sai do programa
		break; //Para de executar comando switch
	default: //Caso não seja nenhum dos citados acima
		printf(" \n\nOpção inválida!!"); //Imprime no console	
		getch(); //Captura tecla
		goto inicio2; //Retorna para linha inicio2
	}
}
void MENU(){ //Inícia função do menu principal
	int opcao; //Declara váriavel opcao
	while(1){ //Inícia loop infinito
		system("cls"); //Limpa console 
		printf("\n\t\t\t --> Char Is Hard Program <--"); //Imprime no console	
		printf("\n\n 1 - Criptografar Texto"); //Imprime no console	
		printf("\n\n 2 - Descriptografar Texto"); //Imprime no console	
		printf("\n\n 3 - Sair"); //Imprime no console	
		printf("\n\n Informe a opção desejada: "); //Imprime no console	
		scanf("%d", &opcao); //Lê tecla digitada e armazena na variável opcao
		setbuf(stdin,NULL); //Limpa buffer do teclado
		switch(opcao){ //Verifica o valor da variável opcao
			case 1: //Caso seja 1
				system("cls"); //Limpa console 
				MENU_CRIPTOGRAFAR(); //Executa função do menu de criptografia
				break; //Para de executar comando switch
			case 2: //Caso seja 2
				system("cls"); //Limpa console 
				MENU_DESCRIPTOGRAFAR(); //Executa função do menu de descriptografia
				break; //Para de executar comando switch
			case 3: //Caso seja 3
				printf(" \n\nFinalizando...\n\n"); //Imprime no console					
				exit(0); //Sai do programa
				break; //Para de executar comando switch
			default: //Caso não seja nenhum dos citados acima
				printf("\n\n Opção inválida!!\n\n"); //Imprime no console	
				system("pause"); //Pausa o programa até que uma tecla seja pressionada
		}
	}
}
int main(){ //Inícia função do programa principal
	system("color 02"); //Define cor da fonte como verde claro
	setlocale(LC_ALL,"Portuguese"); //Inclui a língua portuguesa no programa e permite o uso de acentos nos caracteres
	MENU(); //Executa função do menu principal
}

Continue navegando