Você está na página 1de 49

SISTEMAS DE INFORMAO

CRIPTOGRAFIA

Nomes : Daniel da Silva Pereira RA : B38IAF-4 Caio dos Santos Nunes RA : B3905C-0 Felipe Tadeu da Silva Dias RA : B24592-1 Paulo Felipe RA :B49CDI-3

NDICE 1........................................................................................................................objetivo 2,3................................................................................................................introduo 4 6 .............................................................................................................Conceitos 7 12...................................................................................Tecnicas mais utilizadas 13 16.......................................................................................................Dissertao 17.................................................................................................................Concluso 18 38........................................................................Relatrio com cdigos em C# 39 45..............................................Apresentao do Programa pelo computador 46...............................................................................................................Bilbliografia

OBJETIVO DO TRABALHO O Trabalho tem o objetivo de mostrar o que Criptografia,a segurana que ela nos traz, a forma correta de criptografar e descriptografar, conceitos de criptografia, as tcnicas mais usadas, suas falhas e etc...

INTRODUO Criptografia Atualmente a criptografia consiste em uma srie de frmulas matemticas, em que se utiliza um segredo (chamado de chave) para cifrar e decifrar a informao. Este segredo pode ser o mesmo para as duas operaes (criptografia simtrica), ou pode haver segredos diferentes, um para cifr-la e outro para decifr-la, ou viceversa (criptografia assimtrica). Por meio de um software especial e um par de chaves, um usurio pode ento utilizar essa tecnologia, para proteger suas informaes pessoais.

O par de chaves possui as seguintes caractersticas: Chave pblica - disponvel para qualquer usurio que queira se comunicar de forma segura;

Chave privada - chave secreta, que somente o dono do par de chaves conhece.

Atravs de software e um par de chaves, um usurio pode:

Assinar digitalmente um documento (garantir que o documento no foi alterado aps a assinatura e que o mesmo foi assinado pelo dono do par de chaves que foi usado);

Cifrar um documento, de modo que s o dono do par de chaves destino seja capaz de ler a informao cifrada;

Assinar e cifrar um documento.

Infelizmente, o uso do software apenas garante que o dono do par de chaves realizou as operaes, e no que o par de chaves em questo pertence realmente a uma pessoa.

O grupo dar um destaque maior para a criptografia simtrica que o tipo mais simples de criptografia, j que tanto o emissor quanto o receptor da mensagem possuem a mesma chave, ou seja, a mesma chave usada tanto na codificao quanto na decodificao. Para ser realizada, basta que o emissor, antes de enviar a mensagem criptografada, envie a chave privada que ser utilizada para descriptograf-la. Como o sistema de assinatura digital se baseia numa criptografia de chaves assimtricas, uma das possibilidades de fraude seria o roubo da chave privada. Normalmente, esta chave fica guardada no computador pessoal do usurio. Portanto, a segurana da assinatura depender da segurana deste computador. Uma das opes para tornar a chave privada mais difcil de ser roubada o uso de smartcards. Esses cartes so capazes de armazenar a chave privada do usurio, e assinar digitalmente qualquer documento. A grande vantagem que no h como ler a chave privada armazenada em um smart card. O chip do carto que faz o processo de criptografia dos dados, fazendo com que o computador usado pelo usurio no tenha acesso sua chave privada, apenas mensagem j assinada.

Criptografia Conceitos Gerais

O termo criptografia surgiu da fuso das palavras gregas "krypts" e "grphein", que significam "oculto" e "escrever", respectivamente. Trata-se de um conjunto de conceitos e tcnicas que visa codificar uma informao de forma que somente o emissor e o receptor possam acess-la, evitando que um intruso consiga interpretla. Para isso, uma srie de tcnicas so usadas e muitas outras surgem com o passar do tempo. Na computao, as tcnicas mais conhecidas envolvem o conceito de chaves, as chamadas chaves criptogrficas. Trata-se de um conjunto de bits baseado em um determinado algoritmo capaz de codificar e de decodificar informaes. Se o receptor da mensagem usar uma chave incompatvel com a chave do emissor, no conseguir extrair a informao.

Os primeiros mtodos criptogrficos existentes usavam apenas um algoritmo de codificao. Assim, bastava que o receptor da informao conhecesse esse algoritmo para poder extra-la. No entanto, se um intruso tivesse posse desse algoritmo, tambm poderia efetuar um processo de decifragem, caso capturasse os dados criptografados. H ainda outro problema: imagine que a pessoa A tivesse que enviar uma informao criptografada pessoa B. Esta ltima teria que conhecer o algoritmo usado. Imagine agora que uma pessoa C tambm precisasse receber uma informao da pessoa A, porm a pessoa C no poderia descobrir qual a informao a ser enviada pessoa B. Se a pessoa C capturasse a informao enviada pessoa B, tambm conseguiria decifr-la, pois quando a pessoa A enviou sua informao, a pessoa C tambm teve que conhecer o algoritmo usado. Para a

pessoa A evitar esse problema, a nica soluo seria utilizar um algoritmo diferente para cada receptor. Com o uso de chaves, um emissor pode usar o mesmo algoritmo (o mesmo mtodo) para vrios receptores. Basta que cada um receba uma chave diferente. Alm disso, caso um receptor perca ou exponha determinada chave, possvel troc-la, mantendo-se o mesmo algoritmo. Voc j deve ter ouvido falar de chave de 64 bits, chave de 128 bits e assim por diante. Esses valores expressam o tamanho de uma determinada chave. Quanto mais bits forem utilizados, mais segura ser a criptografia. Explica-se: caso um algoritmo use chaves de 8 bits, por exemplo, apenas 256 chaves podero ser usadas na decodificao, pois 2 elevado a 8 256. Isso deixa claro que 8 bits inseguro, pois at uma pessoa capaz de gerar as 256 combinaes (embora demore), imagine ento um computador! Porm, se forem usados 128 ou mais bits para chaves (faa 2 elevado a 128 para ver o que acontece), teremos uma quantidade extremamente grande de combinaes, deixando a informao criptografada bem mais segura. A criptografia passou a ser usada em larga escala por todas as aes, principalmente em pocas de guerra, tal como durante a Guerra Fria, onde Estados Unidos e Unio Sovitica usaram esses mtodos a fim de esconder do inimigo suas aes e movimentaes, criptografando-as e impedindo que outros que no possussem a chave pudessem ler, forando-os a usar diversos mtodos para quebrar os cdigos de criptografia. Depois disso surgiram diversos tipos de criptografia, tais como a por chave simtrica, por chave assimtrica e por hash (podemos citar ainda a criptografia quntica, que ainda est em fase de testes).

Criptografia Hash A criptografia hashpermite que, atravs de uma string de qualquer tamanho, seja calculado um identificador digital de tamanho fixo, chamado de valor hash. O valor hash geralmente formado por 16 bytes (no caso do MD-2, MD-4 e MD- 5) ou 20 bytes (no caso do SHA-1), mas pode se estender, embora no passe de 512 bytes. Seja uma funo hash H, e x uma stringqualquer, teremos que H(x) ser o valor hash para a string x. As caractersticas bsicas de uma funo hash so:

O valor de entrada da funo possui qualquer tamanho; O valor de sada da funo possui tamanho fixo; H(x) relativamente fcil de ser computado, para qualquer valor de x; H(x) uma funo one-way; H(x) livre de coliso.

Uma funo hash dita "one-way pois uma vez obtido o valor hashh para uma stringx, computacionalmente impossvel fazer o processo inverso, ou seja, encontrar um valor x tal que H(x) = h. Diz-se ainda que H(x) livre de coliso, significando que as funes hash devem garantir uma probabilidade mnima de que duas strings diferentes acabem por resultar no mesmo valor hash. Qualquer alterao na string original que deu origem ao identificador digital, mesmo que de um nico bit, acabar por gerar uma alterao significativa no valor hash final.

Tcnicas criptogrficas mais utilizadas

registros do uso da chamada criptografia clssica datando de cerca de trs milnios. A criptografia clssica era utilizada normalmente para transportar mensagens seguramente, de forma que, caso fosse interceptada por inimigos, estes no pudessem entend-las, ou para proteger segredos comerciais armazenados. Auxlios computacionais so uma evoluo recente na histria da criptografia. As tcnicas clssicas eram operadas apenas por humanos com lpis e papel ou, no mximo, com equipamentos mecnicos. Por esta razo as tcnicas eram simples, normalmente atuando na transposio ou substituio de caracteres. Ao contrrio do que acontece atualmente, a segurana das tcnicas encontrava-se com freqncia no segredo da prpria tcnica aplicada. Exemplos de tcnicas clssicas de substituio so a cifra Atbash (inverso das letras do alfabeto, com origens no hebraico) e a cifra de Csar (rotao das letras do alfabeto por um nmero fixo). Na transposio, a ordem das letras ou das palavras na mensagem alterada segundo algum esquema previamente combinado. A criptoanlise desenvolveu durante a era medieval tcnicas de anlise de freqncia, na qual as freqncias das letras na mensagem so comparadas s freqncias mdias em textos do idioma da mensagem, permitindo quebrar com facilidade cifras de substituio. Dado o baixo requerimento computacional da anlise de freqncia, as cifras clssicas so consideradas atualmente como incapazes de fornecer qualquer segurana real, sendo utilizados apenas como formas ocasionais de entretenimento.

A partir do incio do sculo XX comeou-se a usar aparelhos mecnicos para aplicar e remover cifras, combinando mensagens em texto puro, chaves secretas e operaes matemticas. A Segunda Guerra Mundial foi prolfica em mtodos criptogrficos e aparelhos para quebra de cifras; a mquina Enigma tornou-se clebre por ser usada peloexrcito alemo durante a guerra e por ter tido sua cifra quebrada pelos aliados, que descobriram segredos militares alemes. Entre as dcadas de 1950 e 1970 a criptografia foi tratada como segredo de estado e muito pouco foi divulgado; suas evolues voltaram a ser pblicas na dcada de 1970, fundamentadas sobre as teorias de matemtica, informao e comunicao e calcadas nos computadores digitais.

Criptografia simtrica A criptografia simtrica a forma mais comum de criptografia e a de mais simples entendimento. Os dados a serem protegidos so alimentados a um algoritmo que

recebe uma chave secreta e fornece como sada o dado criptografado, ou seja, modificado e aparentemente sem sentido. A informao ento transmitida ao receptor (ou armazenada para uso posterior). Para obter os dados originais, a informao criptografada alimentada a um algoritmo que realiza um procedimento inverso e, se fornecida a mesma chave secreta, tem como sada os dados originais.

O fato marcante da criptografia simtrica, e origem de seu nome, o uso da mesma chave secreta (ou de chaves trivialmente relacionveis) para codificao e decodificao. Para um envio criptografado bem-sucedido, a chave deve ser acordada previamente entre o emissor e o receptor. Surge ento o grande problema, que no possui fcil soluo: a transmisso da chave. Caso esta transmisso no seja segura o bastante, a segurana de toda a criptografia do dado principal fica abalada. Por ser mais intuitiva, a criptografia simtrica era a nica forma conhecida at meados da dcada de 1970. Ela possui vantagens que ainda a fazem ser utilizada at hoje, como a velocidade na codificao e decodificao. Ela tambm vantajosa quando a troca de chaves secretas no um problema, como no armazenamento local de arquivos criptografados. Exemplos de algoritmos de criptografia simtrica so o AES (AdvancedEncryption Standard), Blowfish e RC4.

Criptografia assimtrica

A criptografia assimtrica ou criptografia de chave pblica, cujo desenvolvimento teve incio em 1976, tem como principal vantagem aquele que era o ponto fraco da criptografia simtrica: as chaves de codificao e decodificao so diferentes, eliminando o problema da comunicao. Os algoritmos usados no processo de criptografia so relacionados, porm um de resoluo muito mais fcil que o outro (chamados funes de mo nica) a chave original, chamada de chave privada, pode dar origem chave que divulgada, chamada de chave pblica, mas o inverso no possvel em tempo hbil. Os algoritmos de criptografia assimtrica so em geral baseados em problemas de difcil soluo, como curvas elpticas, logaritmos discretos e fatorao de nmeros primos. So exemplos de tcnicas de criptografia assimtrica o protocolo DiffieHellman de troca de chaves, o algoritmo RSA e o padro DSA (Digital SignatureAlgorithm). Uma das grandes desvantagens da criptografia assimtrica o custo computacional dos algoritmos, muito mais lentos que os da criptografia simtrica, mesmo se implementados em hardware. Por esta razo as transmisses freqentemente iniciam-se com o envio de uma chave secreta atravs de criptografia assimtrica, e os dados propriamente ditos em muito maior quantidade so enviados codificados com criptografia simtrica.

Criptografia nas redes sem fio As redes wireless abriram uma brecha enorme na segurana dos dados. Isso porque os dados podem ser facilmente interceptados com algum conhecimento tcnico. Isso obrigou o desenvolvimento de tcnicas de criptografia para tornar esse tipo de comunicao vivel, no s para empresas que decidem conectar seus usurios por meio de redes sem fio, mas tambm para que os usurios domsticos possam realizar suas transaes financeiras com mais segurana e privacidade. Os tipos de criptografia mais usados nas redes wireless so:

WEP: esta tcnica usa uma chave secreta compartilhada e o algoritmo de criptografia RC4. O roteador wireless ou ponto de acesso, bem como todas as estaes que se conectam a ele devem usar a mesma chave compartilhada. Para cada pacote de dados enviado em qualquer direo, o transmissor combina o contedo do pacote com uma soma de verificao desse pacote. O padro WEP pede ento que o transmissor crie um IV (Initialization Vector, vetor de inicializao) especfico para o pacote, que combinado com a chave e usado para criptografar o pacote. O receptor gera seu prprio pacote correspondente e o usa para decodificar o pacote. Em teoria, essa abordagem melhor do que a ttica bvia de usar apenas a chave secreta compartilhada, pois inclui um bit de dado especfico para o pacote que dificulta sua violao. Entretanto, se uma chave compartilhada estiver comprometida, um invasor poder bisbilhotar o trfego de informaes ou entrar na rede.

WPA e WPA2: estes certificados de segurana so baseadas no padro da Wi-Fi Alliance para redes locais sem fio e utilizados por muitas empresas e at em redes domsticas. Eles permitem autenticao mtua para verificao de usurios individuais e criptografia avanada. A WPA fornece criptografia para empresas, e a WPA2 considerada a prxima gerao de segurana Wi-Fi vem sendo usada por muitos rgos governamentais em todo o mundo. O WPA2 com AES a novidade, tanto para o uso corporativo quanto para o pessoal. Ao usurio residencial, ele garante um excelente padro de segurana e, aos usurios corporativos, permite agregar um servidor de autenticao para controle dos usurios em conjunto com a criptografia, avalia Diogo Superbi, engenheiro de vendas da Linksys no Brasil.

Assinatura Digital Um recurso conhecido por Assinatura Digital muito usado com chaves pblicas. Trata-se de um meio que permite provar que um determinado documento eletrnico de procedncia verdadeira. Quem recebe um documento assinado digitalmente usa a chave pblica fornecida pelo emissor para se certificar da origem. Alm disso, a chave integrada ao documento isso implica que qualquer alterao realizada nas informaes vai invalidar o documento. Criptografia Quntica Este tipo de codificao de informao difere dos demais mtodos criptogrficos porque no precisa do segredo nem do contato prvio entre as partes. A criptografia quntica permite a deteco de intrusos e incondicionalmente segura mesmo que o intruso tenha poder computacional ilimitado. Mas o seu custo de implantao muito elevado. Outro fato limitante para a adoo dessa tcnica a taxa de erros na transmisso dos ftons, seja por ondas de rdio ou fibra tica. At agora, os melhores resultados foram obtidos por meio de fibras de altssima pureza, abrangendo uma distncia de aproximadamente 70 km.

Dissertao Chave simtrica Esse um tipo de chave mais simples, onde o emissor e o receptor fazem uso da mesma chave, isto , uma nica chave usada na codificao e na decodificao da informao. Existem vrios algoritmos que usam chaves simtricas, como o DES, o IDEA, e o RC: - DES (Data Encryption Standard): criado pela IBM em 1977, faz uso de chaves de 56 bits. Isso corresponde a 72 quatrilhes de combinaes. um valor absurdamente alto, mas no para um computador potente. Em 1997, esse algoritmo foi quebrado por tcnicas de "fora 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 faz uso de chaves de 128 bits e que tem uma estrutura semelhante ao DES. Sua implementao em software mais fcil do que a implementao deste ltimo; - RC (Ron'sCodeouRivestCipher): criado por Ron Rivest na empresa RSA Data Security, esse algoritmo muito utilizado em e-mails e faz uso de chaves que vo de 8 a 1024 bits. Possui vrias verses: RC2, RC4, RC5 e RC6. Essencialmente, cada verso difere da outra por trabalhar com chaves maiores. H ainda outros algoritmos conhecidos, como o AES (AdvancedEncryptionStandard) - que baseado no DES - , o 3DES, o Twofish e sua variante Blowfish, entre outros. O uso de chaves simtricas tem algumas desvantagens, fazendo com que sua utilizao no seja adequada em situaes onde a informao muito valiosa. Para comear, necessrio usar uma grande quantidade de chaves caso muitas pessoas ou entidades estejam envolvidas. Ainda, h o fato de que tanto o emissor quanto o receptor precisam conhecer a mesma chave. A transmisso dessa chave de um para o outro pode no ser to segura e cair em "mos erradas".

Possibilidades de Fraude Violao da chave privada Como o sistema de assinatura digital se baseia numa criptografia de chaves assimtricas, uma das possibilidades de fraude seria o roubo da chave privada. Normalmente, esta chave fica guardada no computador pessoal do usurio. Portanto, a segurana da assinatura depender da segurana deste computador. Uma das opes para tornar a chave privada mais difcil de ser roubada o uso de smartcards. Esses cartes so capazes de armazenar a chave privada do usurio, e assinar digitalmente qualquer documento. A grande vantagem que no h como ler a chave privada armazenada em um smart card. O chip do carto que faz o processo de criptografia dos dados, fazendo com que o computador usado pelo usurio no tenha acesso sua chave privada, apenas mensagem j assinada.

SmartCard

Leitores de SmartCard Retirado do site Club Do Hardware

Existe ainda o eToken da Aladdin, que basicamente igual ao SmartCard. uma chave que ligada ao USB do computador e que contm o mesmo chip encontrado no SmartCard., ou seja, um SmartCard USB. Sua vantagem perante o SmartCard ? Compare o nmero de computadores que possuem leitor de cartes e o nmero de computadores que possuem porta USB, a est a sua resposta.

Retirado do site da Aladdin Distribuio da chave pblica Como em todo tipo de criptografia com chave assimtrica, a segurana da divulgao da chave pblica muito importante. Caso contrrio, uma pessoa pode distribuir chaves pblicas em nome de outras pessoas. Por exemplo: Digamos que um atacante deseje transmitir uma mensagem em nome de uma pessoa A. Ele cria uma chave pblica e a distribui, como se esta fosse a chave pblica de A. Em seguida, ele pode encriptar qualquer mensagem usado sua chave privada, assinar digitalmente o documento e envi-lo para um destinrio B. B verificar a assinatura e no encontrar fraude. Para previnir este tipo de ataque, necessrio que haja uma ICP (Infra-estrutura de Chaves Pblicas) ou, em ingls, PKI (Public Key Infrastructure). As ICPs garantem a autenticidade das chaves pblicas. No Brasil, a ICP-Brasil controla seis Autoridades Certificadoras*: a Presidncia da Repblica, a Receita Federal, o SERPRO, a Caixa Econmica Federal, a Serasa e a CertiSign. * Autoridades Certificadoras so rgos responsveis pela emisso de Certificados Digitais**. ** Certificados Digitais so documentos que contm a chave pblica de um usurio e os dados necessrios para garantir sua identidade. Timing Attacks

Outra possibilidade de descoberta da chave privada quando o atacante conhece muito bem o hardware do usurio que assina uma mensagem digitalmente e capaz de interceptar as mensagens assinadas por este. Se o atacante tiver conhecimento do tempo de encriptao(assinatura) de diversas mensagens, possvel que ele descubra a chave privada do usurio. Em geral, esse tipo de ataque era usado contra smartcards, no entanto Dan Boneh e David Brumley mostraram que possvel descobrir a chave privada de um servidor de uma rede local, com segurana baseado em OpenSSL, o que foi publicado no artigo Remote Timing Attacks are Practical (2003).Uma forma de evitar timing attacks garantir que o processo de encriptao seja feito sempre em tempo constante, para qualquer texto que seja assinado, apesar de acarretar uma perda de eficincia.

Concluso Criptografia s pode ser considerada como tal se 4 princpios bsicos forem seguidos e oferecidos: confidencialidade, autenticao, integridade da informao e no repudiabilidade (o remetente no pode negar o envio da informao). por isso que a criptografia um recurso to importante na transmisso de informaes pela internet e, mesmo assim, no capaz de garantir 100% de segurana, pois sempre existe algum que consegue desenvolver uma maneira de "quebrar" uma codificao. Por isso que tcnicas existentes so aperfeioadas e outras so criadas, como a "Criptografia Quntica". Na criptografia h ainda outros conceitos envolvidos, como a Funo Hashing (usada em assinaturas digitais), e aplicaes, como a j citada certificao digital. Para quem deseja trabalhar com computao, criptografia uma rea interessante. Obviamente, necessrio ter muita afinidade com clculos, afinal, como pode ser notado no artigo, matemtica a base para os conceitos que envolvem a criptografia.

Relatrio com cdigos em C#

1 Crie uma pasta chamada arquivo na unidade C:

Principal.Designer.cs

namespace CriptografiaDescriptografia { partial class Principal { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.label1 = new System.Windows.Forms.Label(); this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.box1 = new System.Windows.Forms.RichTextBox(); this.btnCriptografar = new System.Windows.Forms.Button(); this.btnDescriptografar = new System.Windows.Forms.Button(); this.panel1 = new System.Windows.Forms.Panel(); this.btSair = new System.Windows.Forms.Button(); this.label3 = new System.Windows.Forms.Label(); this.lbArquivo = new System.Windows.Forms.Label();

this.btnProcurar = new System.Windows.Forms.Button(); this.label2 = new System.Windows.Forms.Label(); this.panel2 = new System.Windows.Forms.Panel(); this.label4 = new System.Windows.Forms.Label(); this.panel1.SuspendLayout(); this.panel2.SuspendLayout(); this.SuspendLayout(); // // label1 // this.label1.AutoSize = true; this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label1.Location = new System.Drawing.Point(4, 50); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(189, 20); this.label1.TabIndex = 0; this.label1.Text = "Texto a ser criptografado:"; // // openFileDialog1 // this.openFileDialog1.FileName = "openFileDialog1"; // // box1 // this.box1.Location = new System.Drawing.Point(197, 13); this.box1.Name = "box1"; this.box1.Size = new System.Drawing.Size(430, 96); this.box1.TabIndex = 1; this.box1.Text = ""; // // btnCriptografar // this.btnCriptografar.Location = new System.Drawing.Point(363, 115); this.btnCriptografar.Name = "btnCriptografar"; this.btnCriptografar.Size = new System.Drawing.Size(75, 23); this.btnCriptografar.TabIndex = 2; this.btnCriptografar.Text = "Criptografar"; this.btnCriptografar.UseVisualStyleBackColor = true; this.btnCriptografar.Click += new System.EventHandler(this.button1_Click); // // btnDescriptografar // this.btnDescriptografar.Location = new System.Drawing.Point(257, 93); this.btnDescriptografar.Name = "btnDescriptografar"; this.btnDescriptografar.Size = new System.Drawing.Size(75, 23); this.btnDescriptografar.TabIndex = 3; this.btnDescriptografar.Text = "Descriptografar"; this.btnDescriptografar.UseVisualStyleBackColor = true;

this.btnDescriptografar.Click += new System.EventHandler(this.button2_Click); // // panel1 // this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panel1.Controls.Add(this.btSair); this.panel1.Controls.Add(this.label3); this.panel1.Controls.Add(this.lbArquivo); this.panel1.Controls.Add(this.btnProcurar); this.panel1.Controls.Add(this.btnDescriptografar); this.panel1.Location = new System.Drawing.Point(12, 212); this.panel1.Name = "panel1"; this.panel1.Size = new System.Drawing.Size(634, 133); this.panel1.TabIndex = 4; // // btSair // this.btSair.Location = new System.Drawing.Point(362, 93); this.btSair.Name = "btSair"; this.btSair.Size = new System.Drawing.Size(75, 23); this.btSair.TabIndex = 8; this.btSair.Text = "Sair"; this.btSair.UseVisualStyleBackColor = true; this.btSair.Click += new System.EventHandler(this.btSair_Click); // // label3 // this.label3.AutoSize = true; this.label3.Location = new System.Drawing.Point(96, 50); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(102, 13); this.label3.TabIndex = 7; this.label3.Text = "Diretrio do arquivo:"; // // lbArquivo // this.lbArquivo.AutoSize = true; this.lbArquivo.Location = new System.Drawing.Point(198, 50); this.lbArquivo.Name = "lbArquivo"; this.lbArquivo.Size = new System.Drawing.Size(145, 13); this.lbArquivo.TabIndex = 6; this.lbArquivo.Text = "Nenhum arquivo selecionado"; // // btnProcurar // this.btnProcurar.Location = new System.Drawing.Point(7, 45); this.btnProcurar.Name = "btnProcurar"; this.btnProcurar.Size = new System.Drawing.Size(83, 23);

this.btnProcurar.TabIndex = 5; this.btnProcurar.Text = "Procurar arquivo"; this.btnProcurar.UseVisualStyleBackColor = true; this.btnProcurar.Click += new System.EventHandler(this.button3_Click); // // label2 // this.label2.AutoSize = true; this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label2.Location = new System.Drawing.Point(12, 189); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(203, 24); this.label2.TabIndex = 4; this.label2.Text = "Descriptografar arquivo"; // // panel2 // this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.panel2.Controls.Add(this.label1); this.panel2.Controls.Add(this.btnCriptografar); this.panel2.Controls.Add(this.box1); this.panel2.Location = new System.Drawing.Point(12, 28); this.panel2.Name = "panel2"; this.panel2.Size = new System.Drawing.Size(634, 158); this.panel2.TabIndex = 5; // // label4 // this.label4.AutoSize = true; this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label4.Location = new System.Drawing.Point(12, 1); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(173, 24); this.label4.TabIndex = 6; this.label4.Text = "Criptografar arquivo"; // // Principal // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(654, 354); this.Controls.Add(this.label4); this.Controls.Add(this.panel2); this.Controls.Add(this.panel1); this.Controls.Add(this.label2); this.Name = "Principal"; this.Text = "Form1";

this.panel1.ResumeLayout(false); this.panel1.PerformLayout(); this.panel2.ResumeLayout(false); this.panel2.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.Label label1; private System.Windows.Forms.OpenFileDialog openFileDialog1; private System.Windows.Forms.RichTextBox box1; private System.Windows.Forms.Button btnCriptografar; private System.Windows.Forms.Button btnDescriptografar; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Label lbArquivo; private System.Windows.Forms.Button btnProcurar; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label3; private System.Windows.Forms.Button btSair; private System.Windows.Forms.Panel panel2; private System.Windows.Forms.Label label4; } }

Classe Principal Onde esto as funes dos botes

Principal.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace CriptografiaDescriptografia { public partial class Principal : Form { public Principal() { InitializeComponent(); } string diretorio = ""; //BOTO DE CRIPTOGRAFAR private void button1_Click(object sender, EventArgs e) { string criptograf = Criptografar.Criptografando(box1.Text); ControleArquivo.GravarArquivo("C:/arquivo/criptografia.txt",criptograf); box1.Text = ""; } public delegate void NovoDelegate(string msg); //BOTO DE PROUCURAR O ARQUIVO private void button3_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); if (openFileDialog1.ShowDialog() == DialogResult.OK) { diretorio = openFileDialog1.FileName; lbArquivo.Text = diretorio; } } //BOTO DE DESCRIPTOGRAFAR private void button2_Click(object sender, EventArgs e) { string retorno = "";

if (diretorio == "") { MessageBox.Show("Voc precisa especificar um diretrio", "Criptografia e Descriptografia"); } else { ControleArquivo.LerArquivo(diretorio, retorno); } } //BOTO DE SAIR private void btSair_Click(object sender, EventArgs e) { if (MessageBox.Show("Voc realmente deseja sair ?", "Criptografia e Descriptografia", MessageBoxButtons.YesNo) == DialogResult.Yes) { Application.Exit(); } } } }

Classe Controle de Arquivos ControleArquivos.cs using System.Windows.Forms; using System.IO; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CriptografiaDescriptografia { class ControleArquivo { //MTODO QUE CRIA QUANDO NO TEM O ARQUIVO E GRAVA public static string GravarArquivo (string diretorio, string texto) { try { TextWriter twriter = File.CreateText(@diretorio); twriter.WriteLine(texto); // o mtodo flush limpa todos os buffers que esto no momento sendo usados; // til para entrada de novos dados que esto pendentes de ser adicionados. twriter.Flush(); // fecha a conexo com o arquivo twriter.Close(); if (texto == "") { MessageBox.Show("Nenhuma palavra foi digitada", "Criptografia e Descriptografia"); } else { MessageBox.Show("Arquivo gravado com sucesso!", "Criptografia e Descriptografia"); } } catch (Exception e) { if (MessageBox.Show("Erro: deseja ver o erro? ", "ERROR: " + "Criptografia e Descriptografia", MessageBoxButtons.YesNoCancel) == DialogResult.Yes) { MessageBox.Show(e.Message, "ERROR: " + "Criptografia e Descriptografia"); }

} return null; } //MTODO QUE EST ABRINDO E LENDO O ARQUIVO public static string LerArquivo(string diretorio, string retorno) { try { TextReader reader = File.OpenText(diretorio); string texto = ""; while ((texto = reader.ReadLine()) != null) { retorno = Descriptografar.Descriptografando(texto); if (texto == "") { MessageBox.Show("No contm contedo para ser descriptografado", "Criptografia e Descriptografia"); }else MessageBox.Show(retorno, "Criptografia e Descriptografia"); } // fecha a conexo com o arquivo reader.Close(); }catch (Exception e) { if(MessageBox.Show("O Programa recebe apenas arquivo '.txt'. Deseja ver o erro?", "ERROR: " + "Criptografia e Descriptografia", MessageBoxButtons.YesNo) == DialogResult.Yes) { MessageBox.Show(e.Message, "ERROR: " + "Criptografia e Descriptografia"); } } return retorno; } } }

Classe Criptografar

Criptografar.cs

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CriptografiaDescriptografia { class Criptografar { public static string Criptografando(string texto) { string hide = ""; string crip, saida = ""; try { for (int i = 0; i < texto.Length; i++) { hide = texto.Substring(i, 1); crip = hide; switch (crip) { case "": crip = "GP-j5b.}"; break; case "_: crip = "G|-Hpb.}"; break; case " : crip = "U}XWIyu/"; break; case "0: crip = "|W2]3ciI"; break; case "@: crip = "mpgvIA(^"; break; case "P: crip = "Z9W6xdpX"; break; case "`: crip = "!*3aZ@5T"; break; case "p: crip = "h<uHCfHX"; break; case ": crip = "^-&q&c;,"; break; case ": crip = "7?Si&;Gk"; break; case ": crip = "qC(bp](s"; break; case ": crip = "R<vOOaf^"; break; case ": crip = "]DKG{~ff"; break; case " ": crip = "K5*4}B!>"; break; case "!": crip = "/qZ0m9h/"; break; case "#": crip = "'L6oo.4C"; break; case "$": crip = "cbRKrM@G"; break; case "%": crip = "$nAl:aI<"; break; case "&": crip = "r<p17Asb"; break; case "'": crip = "9V/j@%gi"; break;

case "(": crip = "4'G|1kt)"; break; case ")": crip = "ZiSuw.`G"; break; case "*": crip = "a4;#V#o!"; break; case "+": crip = "< 3eM%zJ"; break; case ",": crip = "xp+j^(mz"; break; case "-": crip = "UClp@e;Q"; break; case ".": crip = "ook,tfS5"; break; case "/": crip = "@wBtj?=e"; break; case "0": crip = "5G&l$fG:"; break; case "1": crip = "Pw{gn:%5"; break; case "2": crip = "o{zS0$8-"; break; case "3": crip = "%5&VWPbu"; break; case "4": crip = "BaSp/~=L"; break; case "5": crip = "|vt[U4GN"; break; case "6": crip = "6Zb^q|]'"; break; case "7": crip = "7^^PtpO?"; break; case "8": crip = "y]|wU_m1"; break; case "9": crip = "D&ds&%v~"; break; case ":": crip = "Yga8_UH>"; break; case ";": crip = ")DM65&[ "; break; case "<": crip = "gfq`456w"; break; case "=": crip = " vJ`'Nu~"; break; case ">": crip = "^cjKj|6="; break; case "?": crip = "k[Goiqye"; break; case "@": crip = "g}bpuR)J"; break; case "A": crip = "Ur A6U-R"; break; case "B": crip = "9Ytp}RPR"; break; case "C": crip = " T:'u@/<"; break; case "D": crip = "YD<l3&[6"; break; case "E": crip = "<-E_ ('`"; break; case "F": crip = "z;7Wv(xy"; break; case "G": crip = ",k/U<DO1"; break; case "H": crip = ")J{4eTs{"; break; case "I": crip = "Z2w3'ns."; break; case "J": crip = "F<7LTnFC"; break; case "K": crip = "#4DrLk@O"; break; case "L": crip = "x!:F)M/r"; break; case "M": crip = "*z*Y/Kw9"; break; case "N": crip = "`ATL&y7y"; break; case "O": crip = ".. 8d]'0"; break; case "P": crip = "!a'N5Khn"; break; case "Q": crip = "<bYI.iY_"; break; case "R": crip = "jE_Cv+//"; break; case "S": crip = "Oe&K@{:%"; break; case "T": crip = "`0fw}X]%"; break; case "U": crip = "~3+FLy.o"; break; case "V": crip = "fYf/W]qf"; break; case "W": crip = "2RW/^fE%"; break; case "X": crip = "/(E%E<UG"; break;

case "Y": crip = "0WRbgCtB"; break; case "Z": crip = "]tK8RLg%"; break; case "[": crip = ":[[s]vR'"; break; case "]": crip = ":Fs[!&N)"; break; case "^": crip = "CQV_PYJ6"; break; case "_": crip = ")}w>K=Go"; break; case "`": crip = " iu?v5eX"; break; case "a": crip = "'+L<#/M="; break; case "b": crip = "az_L$(nK"; break; case "c": crip = "PuGT3&l~"; break; case "d": crip = "cw/w%H. "; break; case "e": crip = "qd-BzONu"; break; case "f": crip = ":IviQpk2"; break; case "g": crip = "6XX|z.j}"; break; case "h": crip = "fqmF9=L+"; break; case "i": crip = "5uKpo@$?"; break; case "j": crip = "q:sC8/=l"; break; case "k": crip = "o~AK8733"; break; case "l": crip = "mr^y2jG5"; break; case "m": crip = "a?9+K9A5"; break; case "n": crip = ">@-6,iv/"; break; case "o": crip = "L0$D:>Ca"; break; case "p": crip = "74z=]|*&"; break; case "q": crip = "L?()]92k"; break; case "r": crip = "G+BAv+4&"; break; case "s": crip = "+V+?h5lg"; break; case "t": crip = "BByh:'dm"; break; case "u": crip = "O9A3bVc$"; break; case "v": crip = "'Pn3sK9N"; break; case "w": crip = "@/cs.aor"; break; case "x": crip = "E^]Z:B*7"; break; case "y": crip = "d*1_UoSp"; break; case "z": crip = "3#GZFu]["; break; case "{": crip = "ucdqG|=*"; break; case "|": crip = "'.c<Nl#I"; break; case "}": crip = "Dox<#'x("; break; case "~": crip = "o9?a6bQE"; break; case " ": crip = "JhrKVZNz"; break; case "": crip = "gZiqnk#C"; break; case "": crip = "=GbIHN2'"; break; case "": crip = "c[Tu2!@p"; break; case "": crip = "]MGd[HwX"; break; case "": crip = "/1tM/lrl"; break; case "": crip = "5a|VG696"; break; case "": crip = "0zO!;^1d"; break; case "": crip = "r<M44sU4"; break; case "": crip = "x|)iWEp-"; break; case "": crip = "_NvSVcQT"; break; case "": crip = "eF6j9]um"; break;

case "": crip = "J!-zT-WD"; break; case "": crip = "H+mq}f:e"; break; case "": crip = "PAmK5}sc"; break; case "": crip = ":e_/Io|8"; break; case "": crip = "@`|`Mu+,"; break; case "": crip = "#2 w)Q;_"; break; case "": crip = "=GPvpB_:"; break; case "": crip = "'Y]D_U$S"; break; case "": crip = "g:#HCDJ5"; break; case "": crip = "/}Qc4lA1"; break; case "": crip = "c1eTX?Yy"; break; case "": crip = "A.ue.MM]"; break; case "": crip = "g7Cg[[4q"; break; case "": crip = "$(,zSlO4"; break; case "": crip = "v(:OOidO"; break; case "": crip = "-XYKwfNr"; break; case "": crip = "MqiE<x/P"; break; case "": crip = "hQw3:Q_f"; break; case "": crip = "B0$OP)%|"; break; case "": crip = ">y?e'h/N"; break; case "": crip = "c1j05Ty-"; break; case "": crip = ")HBB}izQ"; break; case "": crip = "O%+OZ$YE"; break; case "": crip = "yqt@hm=t"; break; case "": crip = ">YYHp'?E"; break; case "": crip = "6u =aBui"; break; case "": crip = "nCW4CzfG"; break; case "": crip = "9!!}Q%`P"; break; case "": crip = "47{vb7-&"; break; case "": crip = "J.&7E7jw"; break; case "": crip = "Pj'YI@<]"; break; case "": crip = "Pcz+'Pj}"; break; case "-": crip = "r <ER%M*"; break; case "": crip = "_|1p`*@K"; break; case "": crip = "/Tl2.&[y"; break; case "": crip = "ks`ekxnV"; break; case "": crip = "9KE$U5D!"; break; case "": crip = "Q_#t^QvU"; break; case "": crip = "lRB~w2p|"; break; case "": crip = ":K*|Z1Qf"; break; case "": crip = "/=b&&dZ/"; break; case "": crip = "3#Du*~N>"; break; case "": crip = "0m++k5/."; break; case "": crip = "?tWwfmYV"; break; case "": crip = "bdP|qu_%"; break; case "": crip = "EtX6I0rx"; break; case "": crip = " 'O%2yJ "; break; case "": crip = "krf9e-o~"; break; case "": crip = "w7n`b2fP"; break;

case "": crip = "&)3<Hzc2"; break; case "": crip = "1iUsa$y&"; break; case "": crip = ":qJ,cB=8"; break; case "": crip = "%bMQzlrP"; break; case "": crip = "'0%?KK5a"; break; case "": crip = "sC{&vIp:"; break; case "": crip = "D!qN;OY|"; break; case "": crip = "m7b5vxyM"; break; case "": crip = "*Hb3fWAQ"; break; case "": crip = "FpXyf*P?"; break; case "": crip = "D2E/Wbjm"; break; case "": crip = "i#`<'pYH"; break; case "": crip = "#*FyeUI]"; break; case "": crip = "]NMrr1b|"; break; case "": crip = "J]u*O~Ph"; break; case "": crip = ",8%6i`Jk"; break; case "": crip = "n>G]dh|o"; break; case "": crip = "'$:q3wRP"; break; case "": crip = "-dQ@Z4)s"; break; case "": crip = ".O_qdzqb"; break; case "": crip = "r^Ui>O}9"; break; case "": crip = "UMsKB*x1"; break; case "": crip = "FF[0|B/$"; break; case "": crip = "Q!xWu~b="; break; case "": crip = "~1tu:hLD"; break; case "": crip = "i+H@=eiV"; break; case "": crip = "||^M#JrY"; break; case "": crip = "MCBodE%c"; break; case "": crip = "~u3c~Y9;"; break; case "": crip = "|Wo7fnHJ"; break; case "": crip = ".O=|<i0F"; break; case "": crip = "t92_&f?O"; break; case "": crip = "$NaqDTSr"; break; case "": crip = "S(LCDh1]"; break; case "": crip = "GG?{|<5+"; break; case "": crip = "Tt/z^:/Q"; break; case "": crip = "a|1yNP1?"; break; case "": crip = "nPR0pWFj"; break; case "": crip = "P|<]_qS/"; break; case "": crip = "Oqge~0{O"; break; case "": crip = "UU/RDf9 "; break; case "": crip = "1a&i_n|W"; break; case "": crip = "Eb:iodZ%"; break; case "": crip = "e_5r34Ew"; break; case "": crip = "0GBy6ry@"; break; case "": crip = "LH<rHyV$"; break; case "": crip = "DeQb,bC;"; break; case "": crip = "j{%a'6`w"; break; case "": crip = "/]'w(&XX"; break;

case "": crip = "YJ)o6/E-"; break; case "": crip = "4%}*=5'c"; break; case "": crip = "e(!Y!5gP"; break; case "": crip = "|S|:cvy/"; break; case "": crip = "CkbnUG.z"; break; case "": crip = "]'S<Yeoz"; break; case "": crip = "G6]oy('z"; break; case "": crip = "qPVd.4'd"; break; case "": crip = "doRY'11r"; break; case "": crip = "Lq.B,Qv:"; break; case "": crip = "mpmfuP C"; break; case "": crip = "5r[*{vhz"; break; case "": crip = "hUyxUDGW"; break; case "": crip = "Aih::JXM"; break; case "": crip = "?4I@Ma9d"; break; case "": crip = ",t#s7:<O"; break; case "": crip = "eP=>: (U"; break; } Console.Write(crip); saida = saida + crip; } texto = saida; } catch (Exception e) { Console.WriteLine(e.Message); } return texto; } } }

Classe Descriptografar Descriptografar.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CriptografiaDescriptografia { class Descriptografar { public static string Descriptografando(string texto) { string hide = ""; string crip, saida = ""; for (int i = 0; i < texto.Length; i = i + 8) { hide = texto.Substring(i, 8); crip = hide; switch (crip) { case "GP-j5b.}": crip = " "; break; case "G|-Hpb.}": crip = "_; break; case "U}XWIyu/": crip = " ; break; case "|W2]3ciI": crip = "0; break; case "mpgvIA(^": crip = "@; break; case "Z9W6xdpX": crip = "P; break; case "!*3aZ@5T": crip = "`; break; case "h<uHCfHX": crip = "p; break; case "^-&q&c;,": crip = "; break; case "7?Si&;Gk": crip = "; break; case "qC(bp](s": crip = "; break; case "R<vOOaf^": crip = "; break; case "]DKG{~ff": crip = "; break; case "K5*4}B!>": crip = " "; break; case "/qZ0m9h/": crip = "!"; break; case "'L6oo.4C": crip = "#"; break; case "cbRKrM@G": crip = "$"; break; case "$nAl:aI<": crip = "%"; break; case "r<p17Asb": crip = "&"; break; case "9V/j@%gi": crip = "'"; break; case "4'G|1kt)": crip = "("; break; case "ZiSuw.`G": crip = ")"; break; case "a4;#V#o!": crip = "*"; break; case "< 3eM%zJ": crip = "+"; break;

case "xp+j^(mz": crip = ","; break; case "UClp@e;Q": crip = "-"; break; case "ook,tfS5": crip = "."; break; case "@wBtj?=e": crip = "/"; break; case "5G&l$fG:": crip = "0"; break; case "Pw{gn:%5": crip = "1"; break; case "o{zS0$8-": crip = "2"; break; case "%5&VWPbu": crip = "3"; break; case "BaSp/~=L": crip = "4"; break; case "|vt[U4GN": crip = "5"; break; case "6Zb^q|]'": crip = "6"; break; case "7^^PtpO?": crip = "7"; break; case "y]|wU_m1": crip = "8"; break; case "D&ds&%v~": crip = "9"; break; case "Yga8_UH>": crip = ":"; break; case ")DM65&[ ": crip = ";"; break; case "gfq`456w": crip = "<"; break; case " vJ`'Nu~": crip = "="; break; case "^cjKj|6=": crip = ">"; break; case "k[Goiqye": crip = "?"; break; case "g}bpuR)J": crip = "@"; break; case "Ur A6U-R": crip = "A"; break; case "9Ytp}RPR": crip = "B"; break; case " T:'u@/<": crip = "C"; break; case "YD<l3&[6": crip = "D"; break; case "<-E_ ('`": crip = "E"; break; case "z;7Wv(xy": crip = "F"; break; case ",k/U<DO1": crip = "G"; break; case ")J{4eTs{": crip = "H"; break; case "Z2w3'ns.": crip = "I"; break; case "F<7LTnFC": crip = "J"; break; case "#4DrLk@O": crip = "K"; break; case "x!:F)M/r": crip = "L"; break; case "*z*Y/Kw9": crip = "M"; break; case "`ATL&y7y": crip = "N"; break; case ".. 8d]'0": crip = "O"; break; case "!a'N5Khn": crip = "P"; break; case "<bYI.iY_": crip = "Q"; break; case "jE_Cv+//": crip = "R"; break; case "Oe&K@{:%": crip = "S"; break; case "`0fw}X]%": crip = "T"; break; case "~3+FLy.o": crip = "U"; break; case "fYf/W]qf": crip = "V"; break; case "2RW/^fE%": crip = "W"; break; case "/(E%E<UG": crip = "X"; break; case "0WRbgCtB": crip = "Y"; break; case "]tK8RLg%": crip = "Z"; break; case ":[[s]vR'": crip = "["; break; case "756U)]+?": crip = "/"; break;

case ":Fs[!&N)": crip = "]"; break; case "CQV_PYJ6": crip = "^"; break; case ")}w>K=Go": crip = "_"; break; case " iu?v5eX": crip = "`"; break; case "'+L<#/M=": crip = "a"; break; case "az_L$(nK": crip = "b"; break; case "PuGT3&l~": crip = "c"; break; case "cw/w%H. ": crip = "d"; break; case "qd-BzONu": crip = "e"; break; case ":IviQpk2": crip = "f"; break; case "6XX|z.j}": crip = "g"; break; case "fqmF9=L+": crip = "h"; break; case "5uKpo@$?": crip = "i"; break; case "q:sC8/=l": crip = "j"; break; case "o~AK8733": crip = "k"; break; case "mr^y2jG5": crip = "l"; break; case "a?9+K9A5": crip = "m"; break; case ">@-6,iv/": crip = "n"; break; case "L0$D:>Ca": crip = "o"; break; case "74z=]|*&": crip = "p"; break; case "L?()]92k": crip = "q"; break; case "G+BAv+4&": crip = "r"; break; case "+V+?h5lg": crip = "s"; break; case "BByh:'dm": crip = "t"; break; case "O9A3bVc$": crip = "u"; break; case "'Pn3sK9N": crip = "v"; break; case "@/cs.aor": crip = "w"; break; case "E^]Z:B*7": crip = "x"; break; case "d*1_UoSp": crip = "y"; break; case "3#GZFu][": crip = "z"; break; case "ucdqG|=*": crip = "{"; break; case "'.c<Nl#I": crip = "|"; break; case "Dox<#'x(": crip = "}"; break; case "o9?a6bQE": crip = "~"; break; case "JhrKVZNz": crip = " "; break; case "gZiqnk#C": crip = ""; break; case "=GbIHN2'": crip = ""; break; case "c[Tu2!@p": crip = ""; break; case "]MGd[HwX": crip = ""; break; case "/1tM/lrl": crip = ""; break; case "5a|VG696": crip = ""; break; case "0zO!;^1d": crip = ""; break; case "r<M44sU4": crip = ""; break; case "x|)iWEp-": crip = ""; break; case "_NvSVcQT": crip = ""; break; case "eF6j9]um": crip = ""; break; case "J!-zT-WD": crip = ""; break; case "H+mq}f:e": crip = ""; break; case "PAmK5}sc": crip = ""; break;

case ":e_/Io|8": crip = ""; break; case "@`|`Mu+,": crip = ""; break; case "#2 w)Q;_": crip = ""; break; case "=GPvpB_:": crip = ""; break; case "'Y]D_U$S": crip = ""; break; case "g:#HCDJ5": crip = ""; break; case "/}Qc4lA1": crip = ""; break; case "c1eTX?Yy": crip = ""; break; case "A.ue.MM]": crip = ""; break; case "g7Cg[[4q": crip = ""; break; case "$(,zSlO4": crip = ""; break; case "v(:OOidO": crip = ""; break; case "-XYKwfNr": crip = ""; break; case "MqiE<x/P": crip = ""; break; case "hQw3:Q_f": crip = ""; break; case "B0$OP)%|": crip = ""; break; case ">y?e'h/N": crip = ""; break; case "c1j05Ty-": crip = ""; break; case ")HBB}izQ": crip = ""; break; case "O%+OZ$YE": crip = ""; break; case "yqt@hm=t": crip = ""; break; case ">YYHp'?E": crip = ""; break; case "6u =aBui": crip = ""; break; case "nCW4CzfG": crip = ""; break; case "9!!}Q%`P": crip = ""; break; case "47{vb7-&": crip = ""; break; case "J.&7E7jw": crip = ""; break; case "Pj'YI@<]": crip = ""; break; case "Pcz+'Pj}": crip = ""; break; case "r <ER%M*": crip = "-"; break; case "_|1p`*@K": crip = ""; break; case "/Tl2.&[y": crip = ""; break; case "ks`ekxnV": crip = ""; break; case "9KE$U5D!": crip = ""; break; case "Q_#t^QvU": crip = ""; break; case "lRB~w2p|": crip = ""; break; case ":K*|Z1Qf": crip = ""; break; case "/=b&&dZ/": crip = ""; break; case "3#Du*~N>": crip = ""; break; case "0m++k5/.": crip = ""; break; case "?tWwfmYV": crip = ""; break; case "bdP|qu_%": crip = ""; break; case "EtX6I0rx": crip = ""; break; case " 'O%2yJ ": crip = ""; break; case "krf9e-o~": crip = ""; break; case "w7n`b2fP": crip = ""; break; case "&)3<Hzc2": crip = ""; break; case "1iUsa$y&": crip = ""; break; case ":qJ,cB=8": crip = ""; break;

case "%bMQzlrP": crip = ""; break; case "'0%?KK5a": crip = ""; break; case "sC{&vIp:": crip = ""; break; case "D!qN;OY|": crip = ""; break; case "m7b5vxyM": crip = ""; break; case "*Hb3fWAQ": crip = ""; break; case "FpXyf*P?": crip = ""; break; case "D2E/Wbjm": crip = ""; break; case "i#`<'pYH": crip = ""; break; case "#*FyeUI]": crip = ""; break; case "]NMrr1b|": crip = ""; break; case "J]u*O~Ph": crip = ""; break; case ",8%6i`Jk": crip = ""; break; case "n>G]dh|o": crip = ""; break; case "'$:q3wRP": crip = ""; break; case "-dQ@Z4)s": crip = ""; break; case ".O_qdzqb": crip = ""; break; case "r^Ui>O}9": crip = ""; break; case "UMsKB*x1": crip = ""; break; case "FF[0|B/$": crip = ""; break; case "Q!xWu~b=": crip = ""; break; case "~1tu:hLD": crip = ""; break; case "i+H@=eiV": crip = ""; break; case "||^M#JrY": crip = ""; break; case "MCBodE%c": crip = ""; break; case "~u3c~Y9;": crip = ""; break; case "|Wo7fnHJ": crip = ""; break; case ".O=|<i0F": crip = ""; break; case "t92_&f?O": crip = ""; break; case "$NaqDTSr": crip = ""; break; case "S(LCDh1]": crip = ""; break; case "GG?{|<5+": crip = ""; break; case "Tt/z^:/Q": crip = ""; break; case "a|1yNP1?": crip = ""; break; case "nPR0pWFj": crip = ""; break; case "P|<]_qS/": crip = ""; break; case "Oqge~0{O": crip = ""; break; case "UU/RDf9 ": crip = ""; break; case "1a&i_n|W": crip = ""; break; case "Eb:iodZ%": crip = ""; break; case "e_5r34Ew": crip = ""; break; case "0GBy6ry@": crip = ""; break; case "LH<rHyV$": crip = ""; break; case "DeQb,bC;": crip = ""; break; case "j{%a'6`w": crip = ""; break; case "/]'w(&XX": crip = ""; break; case "YJ)o6/E-": crip = ""; break; case "4%}*=5'c": crip = ""; break; case "e(!Y!5gP": crip = ""; break;

case "|S|:cvy/": crip = ""; break; case "CkbnUG.z": crip = ""; break; case "]'S<Yeoz": crip = ""; break; case "G6]oy('z": crip = ""; break; case "qPVd.4'd": crip = ""; break; case "doRY'11r": crip = ""; break; case "Lq.B,Qv:": crip = ""; break; case "mpmfuP C": crip = ""; break; case "5r[*{vhz": crip = ""; break; case "hUyxUDGW": crip = ""; break; case "Aih::JXM": crip = ""; break; case "?4I@Ma9d": crip = ""; break; case ",t#s7:<O": crip = ""; break; case "eP=>: (U": crip = ""; break; } saida = saida + crip; } return texto = saida; } } }

Apresentao do Programa pelo Computador Layout do Programa

Criptografando uma mensagem e dando um feedback

Apagando a mensagem do RichTextBox

Assim que criptografa, cria um arquivo .txt automaticamente na pasta arquivo na unidade c:

Abrindo o arquivo criptografado no bloco de notas.

Procurando e selecionando o arquivo que foi salvo, para ser descriptografado

Descriptografando

Saindo do programa

Erros Tratados Quando no insere algo no RichTextBox, apresenta a seguinte mensagem.

Quando no especifica um diretrio, para que possa descriptografar.

Quando insere um arquivo que no seja.txt, e que no seja o arquivo criado pelo programa, apresenta a seguinte mensagem.

Biografia http://www.gta.ufrj.br/grad/08_1/quantica/cap1.html#sub2 http://pcworld.uol.com.br/reportagens/2007/10/05/idgnoticia.2007-1004.0383475254/


http://www.gta.ufrj.br/grad/07_1/ass-dig/TiposdeCriptografia.html

http://pt.scribd.com/doc/15014556/TRABALHO-CRIPTOGRAFIA http://www.infowester.com/criptografia.php