UNIP – Universidade Universidade Paulista – Campus Campus Alphaville
Atividades Práticas Supervisionadas
“AS TÉCNICAS CRIPTOGRÁFICAS, CONCEITOS, USOS E APLICAÇÕES”
Tema – Tema – RCA RCA
Integrantes:
MARCOS ANTONIO GONÇALVES MOLTER - T389DC-9 - CC LETICIA COQUETI HOLANDA – B6696O-8 B6696O-8 – CC CC THAYARA VIEIRA - B8015I-9 - CC
Curso: Ciência da Computação Turma: 2º Semestre Professores Orientadores:Ricardo Veras;
Roberto Leminski Leminski
UNIP – Universidade Universidade Paulista – Campus Campus Alphaville
Atividades Práticas Supervisionadas
“AS TÉCNICAS CRIPTOGRÁFICAS, CONCEITOS, USOS E APLICAÇÕES”
Tema – Tema – RCA RCA
O objetivo deste trabalho é abordar o assunto criptografia descrevendo
seus
principais
tipos, com estudo direcionado para a técnica RCA e ainda elaborar um programa capaz de fazer
a
descriptografia mensagem.
2013
criptografia de
e uma
Sumário 1.1 - Introdução ................................................................................................................ 4 1.2-Criptografia (Conceitos gerais) .................................................................................. 5 1.3.
Técnicas criptográficas mais utilizadas e conhecidas............................................ 7
1.4.
Chave assimétrica - RSA .................................................................................... 11
1.4.1.
Estruturação, conceitos e fundamentação .................................................... 11
1.4.2.
Benefícios em relação às técnicas anteriores. .............................................. 13
1.4.3.
Aplicações que fazem/fizeram uso da técnica.............................................. 14
1.4.5.
Vulnerabilidades e falhas. ............................................................................ 15
1.4.6.
Melhorias propostas e/ou implementadas. ................................................... 16
1.5.
Projeto (estrutura) do programa........................................................................... 17
1.6.
Relatório com as linhas de código do programa ................................................. 18
1.7.
Apresentação do programa em funcionamento em um computador, apresentando
todas as funcionalidades pedidas e extras. ..................................................................... 22 1.8.
Bibliografia .......................................................................................................... 25
1.9. Relatório de imagens .............................................................................................. 26 2.0.
Ficha de Atividades Práticas Supervisionadas ..... Error! Bookmark not defined.
1.1 - Introdução
Este é um trabalho acadêmico que visa à implementação das técnicas de codificação na linguagem de programação c#, instruídas durante o segundo período do curso de ciências da computação na Universidade Paulista – UNIP campus Alphaville. Para tanto, iremos abordar como principal assunto o tema as técnicas criptográficas, conceitos, usos e aplicações.
Atualmente vivemos na era da informação, ou seja, não há nada que fazemos hoje onde não exista trafego de informação, até mesmo quando não sabemos, existem dados sendo transmitidos e informações sobre nós podem ser enviadas. Com o mundo globalizado e principalmente com o acesso a internet cada vez maior, é comum que haja integração de pessoas com todo o mundo, seja para um bate papo, troca de conhecimentos, mensagens, redes sociais e muitas outras coisas que nos envolvem no âmbito pessoal, porem não é só para isto que há transmissão de dados, esta ocorre também para assuntos onde a privacidade ou segurança da informação transmitida é essencial para o negocio empresa ou as pessoas envolvidas, como transações bancarias, envio de e-mail, acesso a rede de dados armazenamento de arquivos confidencias além de dados secretos do governo ou até mesmo estratégias militares. Como toda esta informação transita pela internet não é difícil que um invasor malicioso tenha acesso a qualquer um destes dados, e a proteção da informação que enviamos em qualquer um dos casos acima é importantíssima. Com o objetivo de assegurar que nossos envios e recebimentos de dados sejam feitos de maneira segura, são utilizados técnicas que transformam a informação enviada em uma informação ilegível, para que esta possa ser transmitida e se for interceptada, não poderá ser interpretada. Por outro lado ao receber esta informação ilegível, temos ferramentas que conseguem transformar a informação novamente no formato original, porém para isto, é necessário o conhecimento de uma chave que irá possibilitar esta função.
Para este processo é dado o nome de criptografia, e apesar de ser muito conhecido no mundo digital, nos tempos atuais, esta é uma técnica utiliza a centenas de anos, com o mesmo objetivo, ou seja proteger informação. Desde quando a humanidade ainda escrevia na pedra até hoje muitas formas de criptografia foram inventadas, e agora, vamos conhecer algumas das principais.
1.2-Criptografia (Conceitos gerais)
A Criptografia é a ciência que oculta o significado de uma mensagem e tem como ferramenta os recursos matemáticos para cifrar e decifrar mensagens. O ato de cifrar consiste em transformar um texto normal em texto secreto, e o ato de decodificar é a operação inversa, consiste em transformar um texto cifrado em texto normal. Veremos os conceitos históricos da criptografia e suas definições. Na palavra criptografia, “Cripto" vem do grego "kryptos" e significa oculto, envolto, escondido. Também do grego, "graphos" significa escrever.
Não é de hoje que o homem tem sentido a necessidade de guardar segredos e informações sigilosas. Sejam segredos pessoais, segredos religiosos, ou segredos militares e governamentais. Tão forte quanto a necessidade nata da espécie humana de guardar segredo sobre determinados assuntos é a vontade dos mesmos humanos de desvendar esses segredos. Seja por dinheiro, poder, vingança, curiosidade, arrogância, ou qualquer outro sentimento essa tem sido uma batalha que, ao longo dos anos vem sendo travada entre aqueles que querem guardar segredos e os que querem desvendar esses segredos. Com o avanço cada vez maior dos poderes das Redes de Computadores, o mundo tende a ficar menor, perder fronteiras, encurtar distâncias. Hoje, com um simples apertar de teclas, pode-se intercambiar informações através dos cinco continentes em questão de
minutos ou até segundos. Este avanço faz com que a informação e o controle sobre ela sejam estratégicos para os governos e para as empresas. E, quanto maior o fluxo de informações em redes de telecomunicações, ou maior a quantidade de informação armazenada em meios computacionais, maior é a necessidade de empresas, governos e até de pessoas físicas de se protegerem contra uma nova ameaça que está crescendo proporcionalmente ao desenvolvimento da informática. Trata-se do furto de informação sigilosa e estratégica, armazenada em meios computacionais, ou da adulteração de transações através do poder das telecomunicações. Pensando na necessidade de se criar ferramentas capazes de proteger a informação e de prover segurança aos dados armazenados e transmitidos pelas organizações através do mundo, veio a motivação para se estudar Criptografia. Durante muitos séculos, a criptografia foi tratada como uma arte. Enquanto gregos deliciavam-se com o embaralhamento de palavras, os romanos já utilizavam tais conhecimentos para guerras e segredos de estado. Naturalmente, isso lhes deu grande vantagem, pois, ainda que um mensageiro fosse capturado, a mensagem permaneceria protegida. Mas a “arte de cifrar mensagens” tem origens muito mais antigas. Um dos indícios mais antigos de criptografia conhecidos pelo homem é a pedra de Roseta. Descoberta por tropas de napoleão no ano de 1799, esta pedra data de 196 A.C, e contem o mesmo texto em 3 idiomas, grego demótico(tipo de escrita egípcia) e hieróglifos. Desta forma como não havia mais conhecimento dos hieróglifos, o demótico era usado como chave para se entender o significado do texto. Os métodos criptográficos desenvolvidos na antiguidade eram baseados essencialmente em técnicas de substituição e transposição simples, já que o uso de contas matemáticas complexas era pouco prático. A substituição troca letras e/ou conjuntos de letras por outras letras ou símbolos, seguindo regras específicas. Já os métodos de transposição consistem na reorganização das letras da mensagem, numa ordem conhecida apenas por remetente e destinatário.
1.3.
Técnicas criptográficas mais utilizadas e conhecidas
Como dissemos, a arte de criptografia vem sendo utilizada desde o primórdio da humanidade, ainda quando nós riscávamos desenhos em pedras. Porém o grande destaque da criptografia, pode ter ocorrido a partir do século V, quando o passou a ser usada pelos espartanos para transmissão de informações militares. Iremos destacar agora, as principais técnicas de criptografia que se tem conhecimento. Para isto trataremos estes tipos em dois escopos. Primeiro falaremos dos tipos mais conhecido de criptografias de Substituição e de Transposição, em seguida falaremos das principais técnicas em criptografia digital, ou seja, as técnicas do mundo atual na era da informação.
Cifra de Substituição
A cifra de substituição é um método de criptografia queusa um sistema pré-definido de substituição para criptografar uma mensagem. Unidades do texto que podem ser letras isoladas, pares ou outros grupos de letrassão substituídas para formar a cifra. A cifra de substituição difere da cifra de transposição, pois esta segunda altera a ordem das palavras ou letras enquanto a primeira substitua as letras, mas mantendo-as na mesma ordem. Existem diversos tipos de cifras de substituição. Substituição simples se trabalha apenas com letras. Poligráfica se trabalha apenas com grupos de letras. Monoalfabética se há substituição de apenas uma letra e polialfabética se a substituição for de algumas letras. Uma das grandes utilizações da cifra de substituição foi no império romano por César que substituía as letras das suas mensagens por letras do alfabeto grego, tornando a mensagem inteligível aos inimigos. Outra técnica utilizada por ele era a simples rotação do próprio alfabeto romano em 3 casas ROT-3, técnica que ficou conhecida como Cifra de César, ou no mundo da programação como ROT-X . Esta é uma das técnicas mais populares na criptografia amadora devida sua enorme facilidade de implementação.
Exemplo:
ROT(13)
Cifra de Transposição
As Cifras de transposição são cifras onde houve a reordenação lógica das letras da mensagem, com base em uma função. Esta é uma técnica mais complexa que a de substituição, pois existe um argumento lógico envolvido na construção da cifra. Basicamente existem três tipos de cifra de transposição mais importantes, apesar de apresentarem-se milhares de formas de implementação. Note que é normal o uso de letras desconexas no final da mensagem, isto se deve ao fato de querer confundir se acaso tente decifra as mensagens, além de ser necessário para finalizar a forma. Cifra em cerca, nesta forma, a mensagem é distribuída de maneira uniforme em posições determinadas por linha e colunas, uma forma de cerca, depois com este resultado as letras são agrupadas, formando assim a cifra. Depois, para a mensagem ser decifrada, o destinatário deverá ter conhecimento do numero de linhas e colunas que foi utilizado para formar a cerca.
Cifra em Rota, já neste tipo, a mensagem deve ser escrita seguindo um formato prédefinido,seguindo sempre uma rota que pode ser transversal, espiral linear entra outras. A chave para encriptação será a rota escolhida assim como o movimento necessário para sua leitura.
Transposição de colunas, das técnicas de utilização da cifra de transposição esta é uma das que se obtém melhores resultados. Para utilizar-la, deve-se transpor a mensagem em colunas, feito isso se escolhe uma palavra chave com o mesmo numero de letras que a quantidade de colunas, depois reordena as colunas seguindo a ordem alfabética das letras da palavra chave. E ainda pode ser usado em conjunto com a cifra em rota, aplicando esta para a formação das colunas. Para decifrar este tipo de cifra de transposição é necessário o conhecimento da palavra chave.
Técnicas em Criptografia Digital
Basicamente, existem dois tipos de chaves que são usadas nesse processo de criptografia: simétricas e assimétricas. Chave simétrica
É o tipo de chave mais simples e a mesma chave é utilizada tanto pelo emissor quanto por quem recebe a informação. Ou seja, a mesma chave é utilizada para codificação e para a decodificação dos dados. O uso de chaves simétricas tem desvantagens, e não é indicado para casos que envolvem informações muito valiosas. Podemos destacar os seguintes algoritmos que utilizam chave simetrica DES (Data
Encryption Standard): criado pela IBM em 1977, o DES usa chaves de 56
bits, permitindo até 72 quatrilhões de combinações. Apesar disso, foi „quebrado‟ ou
desvendado utilizando-se as chamadas técnicas de "força bruta" (tentativa e erro) em um desafio promovido na internet. IDEA (International
Data EncryptionAlgorithm): criado em 1991 por James Massey e
XuejiaLai, o IDEA é um algoritmo que usa chaves de 128 bits e tem estrutura semelhante ao DES. RC
(Ron'sCode ou RivestCipher): criado por Ron Rivest na empresa RSA Data
Security, esse algoritmo é muito utilizado em e-mails e usa chaves de 8 a 1;024 bits. Há várias versões: RC2, RC4, RC5 e RC6. Cada uma delas difere da outra por trabalhar com chaves de maior complexidade.
Existem ainda outros algoritmos, como o AES (AdvancedEncryption Standard), baseado no DES; 3DES; o Twofish; e a sua variante, o Blowfish.
Chave assimétrica
Também conhecida como "chave pública", a chave assimétrica trabalha com duas chaves: uma privada e outra pública.Nesse método, uma pessoa deve criar uma chave de codificação e enviá-la a quem for lhe mandar informações. Essa é a chave pública. Uma outra chave deve ser criada para a decodificação. Esta, a chave privada, é secreta. Podemos destacar os seguintes algoritmos que utilizam chave assimétricas: RSA (Rivest,
ShamirandAdleman): criado em 1977 nos laboratórios do Massachusetts
Instituteof Technology (MIT), é um dos algoritmos de chave assimétrica mais usados. Nele, números primos são utilizados da seguinte forma: dois números primos são multiplicados para se obter um terceiro valor. A chave privada são os números multiplicados e a chave pública é o valor obtido. ElGamal:
criado por TaherElGamal, esse algoritmo usa um problema matemático
conhecido por "logaritmo discreto" para se tornar seguro. É freqüente em assinaturas digitais.
1.4.
Chave assimétrica- RSA
Para se confiar em um sistema de segurança, é necessário que este sistema tenha sido testado inúmeras vezes e que tenha se mostra seguro em 100% dos casos. Podemos dizer que não há um sistema de criptografia perfeito, pois todos podem ser quebrados, mas o que vai determinar se realmente são seguros é a complexidade necessária para que uma cifra gerada seja quebrada. Além disso, outro fator que poderá determinar o uso de um método de criptografia é a facilidade para implementação controle emanutenção deste método. Por este motivo, nosso grupo decidiu falar um pouco sobre o algoritmo RSA, esta técnica de criptografia, foi inventada em 1978 por R. L. R ivest, A. Shamir e L. Adleman,
quando trabalhavam no MassachussetsInstituteof Technology (M.I.T.). A
junção das iniciais dos Seus sobrenomes deu origem ao nome da técnica. O RSA, por ser um método de chave pública, permite que qualquer usuário codifique mensagens, mas como a chave de decodificação é secreta, só o destinatário legítimo poderá decodificá-la. A impossibilidade de quebrar a chave de decodificação é possível pela não existência de algoritmos eficientes para a fatoração de inteiros em fatores primos, ainda mais, se o número de algarismos é maior que 100. O tempo de codificação de uma mensagem é insignificante, mas tentar quebrar uma mensagem cifrada com esta técnica poderia levar anos.
1.4.1. Estruturação, conceitos e fundamentação
O RSA foi construído sobre uma das áreas mais clássicas da matemática, a Teoria dos números. Ele se baseia na dificuldade em fatorar um número em seus componentes primos.Segundo o Teorema Fundamental da Aritmética todo número inteiro positivo maior que 1 pode ser decomposto de forma única em um produto de números primos. Fatorar números pequenos é algo simples, mas fatorar números grandes é bem difícil e
demorado, pois este é um problema que não pode ser resolvido em um tempo determinável, ou seja, não há uma fórmula para isto. E como o RSA usa isto tudo? As chaves pública e privada são geradas com base na multiplicação de dois números primos. O resultado desta multiplicação será público mas, mas os números que usamos para multiplicar são privados e armazenados de forma secreta, inviabilizando a decifração da mensagem a não ser que seja o detentor da chave publica. No RSA as chaves são geradas desta maneira: 1. Escolha de forma aleatória dois números primos grandes
p e q , da
ordem de
10^{100} no mínimo. 2. Computen = p q 3. Compute a função totiente em n :ɸ(n) = (p-1)(q-1) < ɸ (n)de forma que e 4. Escolha um inteiro e , tal que 1
entre si. 5. Compute dde forma que de € 1 (modɸ(n)) ou seja, d, seja o inverso multiplicativo de e em (modɸ (n)) No passo 1 os números podem ser testados probabilisticamente para primalidade No passo 5 é usado o algoritmo de Euclides estendido, e o conceito de inverso multiplicativo que vem da aritmética modular. Por final temos: A chave pública: o par de números ne e A chave privada: o par de números ne d
Cifração
Para transformar uma mensagem
m onde 0 < m < n
numa mensagem c cifrada usando a
chave pública do destinatário n ee basta fazer uma potenciação modular: c = m^ emod n
A mensagem então pode ser transmitida em canal inseguro para o receptor.
Decifração
Para recuperar a mensagem m da mensagem cifrada c usando a respectiva chave privada do receptor ne d basta fazer outra potenciação modular: m = c^ dmodn
1.4.2. Benefícios em relação às técnicas anteriores.
Por se tratar de uma Chave Assimetrica, tem benefícios sobrea Chave Simétrica pois esta apresenta alguns problemas graves, tais como a necessidade da troca constante dessas chaves e a impossibilidade de serem usados com fins de autentificação,já que a transmissão da chave privada de um para o outro pode não ser segura e acabar caindo em outras mãos, apesar de seus algoritmos serem mais rápidos do que os algoritmos assimétricos. O RSA é um dos algoritmos mais seguros de encriptação de informações atuais, e é a mais bem sucedido técnica que utiliza chaves assimétricas. Uma ver cifrada, não existe até hoje uma maneira de quebrar este enigma, se não com o conhecimento da chave publica e privada.
Inúmeras formas de quebrar as cifras geradas por este algoritmo já foram tentadas, porém nenhuma obteve êxito até hoje, enquanto a maioria das demais técnicas já tiverem seus códigos quebrados. O algoritmo para gerar as chaves assim como para cifrar e decifrar as mensagens passou a ser publico a partir do ano 2000, desta forma qualquer um pode usar esta técnica em seus desenvolvimentos para criptografar seus dados, ao ponto que existem outros algoritmos que são pagos. Por fim a complexidade matemática envolvida na criação da cifra apesar de ter um conceito simples, ou seja fatoração de números primos, não é de fácil resolução quando se trata de números grandes, pois estes são divisíveis apenas por eles mesmo ou por um. Calculo que nem mesmo os computadores mais modernos teriam capacidade de fazer com facilidade, e levariam anos para isto, além disto, este resultado resolveria apenas a mensagem em questão já que para outra mensagem teríamos outras chaves. Já em alguns casos de outaras técnicas a formula matemática poderia ser quebrada, por exemplo, com tentativa e erro, e decifrando a matemática da operação, qualquer outra mensagem poderia ser decifrada.
1.4.3. Aplicações que fazem/fizeram uso da técnica.
Por se tratar de uma técnica muito segura de criptografia o RSA é utilizado por milhares de aplicações em todo o mundo, Principalmente em aplicações de comercio eletrônico. Para isto é utilizado no Browser como internet explorer, mozilla Firefox opera e outros. Como o RSA possui duas chaves, ou seja é uma técnica assimétrica, as aplicações que a utilizam, possuem um sistema de certificado digital, para garantir que a chave publica do destinatário tenha sido enviada por ele, este certificado é validado por uma fonte confiável, garantindo a segurança na transmissão dos dados. Ainda podemos citar outras aplicações que utilizam esta técnica além dos navegados, tais como Outlook, e outros gerenciadores de e-mail para o envio dos e-mails aplicativos de celular para comunicação com portais, Excel para segurança de documento e muitos outros.
1.4.5. Vulnerabilidades e falhas.
Assim como a Chave Simétrica, a Assimétrica também tem seus problemas. A utilização de algoritmos reversos para desencriptação de mensagens acaba por elevar o tempo computacional dos algoritmos de criptografia assimétrica, tornando inviável o seu uso em uma comunicação intensa. Uma chave RSA de 512 bits foi quebrada em 1999 pelo Instituto Nacional de Pesquisa da Holanda, com o apoio de cientistas de mais 6 países. Levou cerca de 7 meses e foram utilizadas 300 estações de trabalho para a quebra. Um fato preocupante: cerca de 95% dos sites de comércio eletrônico utilizam chaves RSA de 512 bits. Uma primeira abordagem de ataque ao RSA teria como objetivo a chave pública por meio da fatoração do módulo, ou seja, dada uma fatoração, pode-se chegar ao expoente de decriptografia. Este é um exemplo de ataque de força bruta ao RSA.
Apesar da melhora constante dos algoritmos de fatoração de números inteiros, esta ainda é uma ameaça considerada distante da realidade, caso o sistema RSA seja corretamente implementado, devido à dificuldade para a fatoração de números inteiros com a tecnologia atual.
Para evitar a geração de módulos módulo
diferentes poderia ser considerado o uso do mesmo
para todos os usuários emitido, por exemplo, por uma autoridade central
confiável. Apesar de parecer eficiente em uma primeira análise, um usuário poderia usar seus próprios expoentes para fatorar o módulo
de outros usuários. Devido a este fato,
um módulo RSA nunca deve ser utilizado por mais de uma entidade.Este é considerado um ataque elementar pois ilustra o uso errôneo do sistema RSA
Para reduzir o tempo necessário para decriptar uma mensagem ou o tempo necessário para gerar uma assinatura pode-se tentar usar um valor de aleatório. Usando um
pequeno no lugar de um
pequeno pode-se alcançar uma melhora no desempenho em
torno de fatores de 10 para um, porém a escolha de um
pequeno pode quebrar
completamente o sistema RSA. Imaginemos que um usuário teve acesso a uma fração da chave privada, de tamanho
bits. Seria este usuário capaz de reproduzir o restante da chave
desta fração? Surpreendentemente a resposta é positiva caso a chave
a partir
seja pequena o
suficiente. Um artigo de 19985 mostra que sendo
é possível reconstruir toda a chave a
partir de uma fração da mesma. Este resultado mostra a importância de proteger a chave privada RSA de forma eficiente e completa.
1.4.6. Melhorias propostas e/ou implementadas.
Com os dois tipos de Chaves (Simétrica e Assimétrica) tendo suas vantagens e desvantagens, era natural o surgimento um método que buscasse mixar as vantagens de cada
um,
eliminando
assim,
suas
desvantagens.
Os protocolos TLS (TransportLayer Security) e SSL (Secure Sockets Layer) são exemplos desse mix. Para compensar o problema do segredo pré-estabelecido da chave simétrica e o alto poder computacional necessário na chave simétrica, foi elaborado um meio onde em sua primeira etapa (handshake), seja utilizado a criptografia assimétrica, autenticando assim os nós e combinando uma chave secreta para um uso posterior na criptografia simétrica. Como o algoritmo de chave pública garante que a negociação foi realizada em um canal seguro, não havendo a necessidade da troca periódica da chave (problemas no caso da Chave Simétrica), todo o restante do processo pode passar a ser realizado utilizando algoritmos de chave simétrica, o que diminui potencialmente a necessidade do poder computacional, permitindo seu uso em uma comunicação mais intensa (problemas encontrados na Chave Assimétrica).
1.5. Projeto (estrutura) do programa DADOS TÉCNICOS: O projeto de criptografia descrito neste trabalho foi desenvolvido em linguagem C#, usando os princípios de chave simétrica, que é uma das técnicas mais simples e utilizadas de criptografia hoje em dia. Este tipo de chave é utilizado tanto para codificação quanto para descodificação de dados. O programa funciona com o principio de substituição de caracteres originais por outros. As posições permanecem as mesmas, mas os caracteres inseridos pelo usuário são substituídos pelo alfabeto de criptografia. A variável “cripto1” recebe o texto a ser criptografado separa em
unidades cada caractere e usando o comando Length pega a posição na primeira variável (“cripto1”- com o texto normal) e troca pela posição em que se encontra a mesma letra com o alfabeto criptografado na variável “cripto2”. O código desenvolvido opera duas funções especificas: criptografar ou descriptografar um texto, tendo também a opção de visualizar autores de edição e alfabeto de criptografia como descrito abaixo. Variável cripto1
“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY Z“
Variável cripto2
"poiuytrewqasdfghjklmnbvczxLKJHGFDSAQWERTYUIOPMNBVCZ X"
É importante ressaltar que o projeto aqui desenvolvido suporta apenas letras do alfabeto, sendo assim não recebe cárteres especiais.
1.6. Relatório com as linhas de código do programa
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Criptografador { class Program { staticvoid Main(string[] args) { //Declaração de Variáveis int menu; menu = 0; string txtnormal, txtcripto = ""; string cripto1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ " ; string cripto2 = "poiuytrewqasdfghjklmnbvczxLKJHGFDSAQWERTYUIOPMNBVCZ X"; string voltamenu = "s"; //Formação de Menus Console.ForegroundColor = ConsoleColor .Blue; Console.Write(" ____________________________________________________\n" ); Console.Write(" | |\n");
Console.Write(" | Bem Vindo ao Criptografador! |\n"); Console.Write(" |___________________________________________________|\n\n\n" ); Console.ResetColor(); Console.Write(" MENU - Escolha uma opção: \n\n\n Criptografar: Digite 1. \n\n Descriptografar: Digite 2. \n\n Alfabeto de criptografia: Digite 3. \n\n Verificar os Autores da Edição: Digite 4. \n\n Para sair: Digite 5. \n\n\n Digite sua opção:\n\n ");
menu = Convert.ToInt16(Console.ReadLine()); Console.WriteLine("\n\n"); //Condição de Menus //Condição de Menu 1 if (menu == 1) //Condição de menu para entrar em criptografar { Console.WriteLine(" Digite o texto que deseja criptografar: \n"); txtnormal = Console.ReadLine(); //Criptografando a Variável for (int x = 0; x < txtnormal.Length; x++) { int pos = cripto1.IndexOf(txtnormal[x]); txtcripto = txtcripto + cripto2[pos]; } Console.Write("__________________________________________________\ n\n"); Console.Write(" Seu Texto criptografado é : \n\n"); Console.ForegroundColor = ConsoleColor .Red; Console.Write(" {0} \n", txtcripto); Console.ResetColor(); Console.Write("__________________________________________________\ n"); Console.Read(); } else { //Condição de Menu 2
if (menu == 2) //Condição de menu para entrar em descriptografar { txtnormal = txtcripto; txtcripto = ""; Console.WriteLine(" Digite o texto que gostaria de descriptografar: \n"); txtnormal = Console.ReadLine(); //Descriptografando o Texto for (int x = 0; x < txtnormal.Length; x++) { int pos = cripto2.IndexOf(txtnormal[x]); txtcripto = txtcripto + cripto1[pos]; } Console.Write(" ________________________________________________\n\n" ); Console.Write(" Seu Texto Criptografado é : \n\n"); Console.ForegroundColor = ConsoleColor .Green; Console.Write(" {0} \n", txtcripto); Console.ResetColor(); Console.Write(" ________________________________________________\n" ); Console.Read(); } else { //Condição de Menu 3 if (menu == 3) //Condição de menu para em opções de alfabeto { Console.WriteLine("\n Alfabeto correspondente as letras uma embaixo da outra: \n\n\n"); Console.WriteLine("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST UVWXYZ "); Console.WriteLine("poiuytrewqasdfghjklmnbvczxLKJHGFDSAQWERTYUIOPM NBVCZX*"); Console.Read(); } else {
//Condição de Menu 4 if (menu == 4) //Condição de menu para entrar em autores { Console.Write("\n Este software possui fins acadêmicos, o mesmo foi desenvolvido como um projeto \n sem fins lucrativos e comerciais. \n\n Desenvolvedores: \n Letícia Coqueti \n Marcos Molter \n Thayara Vieira \n\n Curso: Ciência da Computação - UNIP Alphaville.\n\n"); Console.Read(); } else { //Condição de menu if (menu == 5) //Condição para sair do sistema { Environment.Exit(0); } } } } } } } }
1.7. Apresentação do programa em funcionamento em um computador, apresentando todas as funcionalidades pedidas e extras.
Figura 1 - Tela Inicial
Figura 2 - Inserindo texto
Figura 3 - Texto Cifrado
Figura 4 - Inserindo Cifra
Figura 5 - Texto decifrado
1.8.
Bibliografia
DAHAB, R. Introdução à Criptografia. Campinas: IC-UNICAMP. MAIA, L. P. Criptografia e Certificação Digital. training. Disponivel em: . Acesso em: 26 out. 2013. OLIVEIRA, B. G. D. Fundamentos da Criptologia Parte I – Introdução e Histórias. Rio de Janeiro: UFRJ, 2005. OLIVEIRA, B. G. D. Fundamentos da Criptologia Parte II – Criptografia Simétrica. Rio de Janeiro: UFRJ, 2005.
OLIVEIRA, P. E. R. D.; ANDRADE, P. T. E. D.; D'OLIVEIRA, R. L. G. Rsa. ime.unicamp. Disponivel em:
. Acesso em: 10 nov. 2013. SILVA, E. V. P. D. Introdução à Criptografia RSA. Ilha Solteira: U N E S P, 2006. SILVEIRA, A. D. S. A CRIPTOGRAFIA RSA E DES. UOL. Disponivel em: . Acesso em: 10 nov. 2013. WIKIPÉDIA. RSA. Wikipédia, 20 out. 2013. Disponivel em: .
1.9. Relatório de imagens
Figura 1 - Tela Inicial ..................................................................................................... 22 Figura 2 - Inserindo texto ............................................................................................... 22 Figura 3 - Texto Cifrado ................................................................................................. 23 Figura 4 - Inserindo Cifra ............................................................................................... 23 Figura 5 - Texto decifrado .............................................................................................. 24