Buscar

70a9c484-3b9c-4145-9b83-164f0bbd3446_0

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 37 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 37 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 37 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 - UNIP
ARTHUR MACEDO OLIVEIRA - N348HC1
DAYANE JOAQUIM - N365650
DERIK ISIDORO ROMÃO DE SOUZA - N3335F0
PEDRO HENRIQUE ANDRADE DEDINO - N359463
RENAN DA SILVA HONORATO - D834100
VICTOR RICARDO TEODORO DOS SANTOS - N365HE0
TÉCNICAS E FUNCIONALIDADES CRIPTOGRÁFICAS
SÃO PAULO
2018
SUMÁRIO
1 OBJETIVO.......................................................................................................3
2 INTRODUÇÃO.................................................................................................3
3 CRIPTOGRAFIA..............................................................................................5
3.1 Conceitos gerais.........................................................................................5
3.2 História da Criptografia..............................................................................5
4 TÉCNICAS CRIPTOGRÁFICAS MAIS UTILIZADAS E CONHECIDAS........9
4.1 Criptografia Simétrica................................................................................9
4.2 Criptografia Assimétrica...........................................................................10
4.3 Criptografia Hash.......................................................................................11
5 DISSERTAÇÃO..............................................................................................13
5.1 Criptografia MD5........................................................................................15
6 RELATÓRIO COM AS LINHAS DE CÓDIGO DO PROGRAMA...................17
9 BIBLIOGRAFIA..............................................................................................31
1 OBJETIVO 
O Objetivo principal desse trabalho é apresentar uma maneira motivadora para aplicar criptografia e fazermos o uso dela e descobrir novas tecnologias para que enfim possamos aprender e abranger nossos conhecimentos e acima de tudo por em pratica tudo que aprendemos e usar desse bem intangível para desenvolvermos um programa e assim vivenciar e descobrir nossas próprias respostas e ter êxito nas nossas novas experiências.
2 INTRODUÇÃO
Este trabalho foi desenvolvido durante o curso de sistemas de informação, na disciplina de atividades práticas supervisionada. Nele, relacionamos conteúdo LPA e LPE, numa proposta de trabalho integrando as disciplinas. Procuramos fazer o levantamento histórico da criptografia e das suas técnicas de criptografar. As informações sobre os tipos de criptografia foram obtidas por meios de pesquisas (internet). Tendo como base o tópico principal, a criptografia. Que é o conjunto de princípios e técnicas empregadas para cifrar a escrita, de modo que apenas os que têm acesso às convenções combinadas possam lê-la. E podemos perceber também que o envio e o recebimento de informações sigilosas era uma necessidade antiga, que existe há centenas de anos e com o surgimento de nossas novas tecnologias e a nossa facilidade de nos comunicarmos e trocar informações via internet é extremamente rápida e a criptografia se tornou uma ferramenta fundamental para permitir que o emissor e o receptor tenham acesso livre e seguro quanto à informação trocada.
Este trabalho também aborda as técnicas mais utilizadas e conhecidas atualmente.
Desenvolvemos uma dissertação focando o uso da criptografia assimétrica. Destacando o uso e o conceito, os ataques que sofre esse tipo de criptografia, as suas vantagens e desvantagens, ou seja, seus pontos fracos e fortes, a segurança que nos permite ter quando ao usamos, os tipos de organizações que se adaptam a ela, e fizemos também uma comparação entre Criptografia Simétrica e Criptografia Assimétrica e uma breve amostra sobre os algoritmos mais conhecidos e por fim nossa conclusão.
Ao descrevermos essa técnica, por ser um assunto muito interessante e que está presente no cotidiano de nós estudantes da tecnologia da informação, o objetivo do trabalho é apresentar uma maneira motivadora para aplicar criptografia e fazermos o uso dela para que enfim possamos aprender e abranger nossos conhecimentos e acima de tudo por em pratica tudo que aprendemos e usar desse bem intangível para desenvolvermos um programa e assim vivenciar e descobrir nossas próprias respostas e ter êxito nas nossas novas experiências. 
3 CRIPTOGRAFIA
3.1 Conceitos gerais
O objetivo deste trabalho é mostrar o estudo dos quatro pilares da criptografia.
A confidencialidade da mensagem: Só o destinatário autorizado deve ser capaz de extrair o conteúdo da mensagem de sua forma cifrada. Além disso, a obtenção de informação sofre o conteúdo da mensagem (como uma distribuição estatística de certos caracteres) não deve ser possível, uma vez que, se for, torna mais fácil a analise criptográfica.
A integridade da mensagem: o destinatário deverá ser capaz de determinar se a mensagem foi alterada durante a transmissão.
Autenticação do remetente: O destinatário deverá ser capaz de identificar remetente e verifica que foi mesmo ele quem enviou a mensagem.
Não repudio ou irretratabilidade do emissor não deverá ser possível ao emissor negar a autoria da mensagem. Nem todos os sistemas ou algoritmos criptográficos são utilizados para atingir todos os objetivos listados acima. Normalmente existem algoritmos para cada uma dessas funções. Mesmo em sistemas criptográficos bem concebidos, bem implantados e usados adequadamente, alguns dos objetivos acima não são práticos (ou mesmo desejáveis) em algumas circunstancias. Por exemplo, o remetente de uma mensagem pode requerer permanecer anônimo o sistema pode destinar-se a um ambiente com recursos computacionais limitados.
3.2 História da Criptografia
A história da criptologia é um passeio no campo da criatividade humana. A criptologia foi usada por governantes e pelo povo, em épocas de guerra e em épocas de paz. A criptologia faz parte da história humana porque sempre houve fórmulas secretas, informações confidenciais e interesses os mais diversos que não deveriam cair no domínio público ou na mão de inimigos.
A palavra Criptografia vem do grego (kriptós = escondido, oculto; grápho = grafia): é a arte ou ciência de escrever em cifra ou em códigos, de forma a permitir que somente o destinatário a decifre e compreenda, ou seja.
A criptografia é tão antiga quanto à própria escrita, já estava presente no sistema de escrita hieroglífica dos egípcios. Os romanos utilizavam códigos secretos para comunicar planos de batalha. Os métodos de criptografar mensagens não mudaram muito até meados do século XIX. Alguns artefatos foram inventados na antiguidade para ajudar a cifrar e decifrar mensagens. Alguns tipos de codificação, como aquele em que somente substitui uma letra por outra ou por um símbolo, eram muito usados, porém, esse método é facilmente decifrado em alguns minutos ou no mais tardar, algumas horas somente com lápis, papel e dedução.
Depois da primeira guerra mundial e no início da segunda guerra, a interceptação de mensagens inimigas se tornara algo que dificilmente seria evitado, portanto, a necessidade de criptografar mensagens de modo complexo se tornara uma questão de vitória ou derrota.
Assim chegamos aos primeiros computadores, e também a guerra fria, onde a espionagem e o avanço tecnológico deixaram muitos generais e outros oficiais com os nervos à flor da pele. Quanto mais avançadas às cifras, mas avançados se tornavam os computadores.
Soviéticos e americanos estavam, então em um ponto onde enviar mensagens por sinal de rádio ou por cabos era tão arriscado quando conversar mais alto que um sussurro em praça pública. Era hora de experimentar comunicações alternativas e impossíveis de serem interceptadas.
A Máquina Enigma
Enigma é o nome por que é conhecida uma máquina eletromecânica de
encriptação com rotores, utilizada tanto para a encriptação como para a decriptação de mensagens secretas, usada em várias formas na Europa a partir dos anos 1920. Asua fama vem de ter sido adaptada pela maior parte das forças militares alemãs a partir de cerca de 1930. A facilidade de uso e a suposta indecifrabilidade do código foram as principais razões para a sua popularidade. O código foi, no entanto, decifrado, e a informação contida nas mensagens que ele não protegeu é geralmente tida como responsável pelo fim da Segunda Guerra Mundial pelo menos um ano antes do que seria de prever.
O Enigma foi patenteado por Arthur Scherbius em 1918. Os primeiros modelos (Enigma modelo A) foram exibidos nos Congressos da União Postal Internacional de 1923 e 1924. Tratava-se de um modelo semelhante a uma máquina de escrever, com as medidas de 65x45x35 cm e pesando cerca de 50 kg.
A marinha alemã interessou-se pela Enigma e comprou alguns exemplares, adaptando-as ao seu uso em 1926. Estas primeiras máquinas de uso militar denominavam-se Funkschlüssel C. Em 1928 o exército elaborou a sua própria versão – Enigma G -.
Tal como outras máquinas com rotores, a Máquina Enigma é uma combinação de sistemas mecânicos e elétricos. O mecanismo consiste num teclado, num conjunto de discos rotativos chamados rotores, dispostos em fila; e de um mecanismo de avanço que faz andar alguns rotores uma posição quando uma tecla é pressionada. O mecanismo varia entre diversas versões da máquina, mas o mais comum é o rotor colocado à direita avançar uma posição com cada tecla premida, e ocasionalmente despoletar o movimento rotativo dos restantes rotores, à sua esquerda, à semelhança do mecanismo conta-quilómetros de um automóvel. O movimento contínuo dos rotores provoca diferentes combinações na encriptação.
Existem registros do uso da chamada criptografia clássica datando de cerca de três milênios. A criptografia clássica era utilizada normalmente para transportar mensagens seguramente, de forma que, caso fosse interceptada por inimigos, estes não pudessem entendê-las, ou para proteger segredos comerciais armazenados.
Auxílios computacionais é uma evolução recente na história da criptografia. As técnicas clássicas eram operadas apenas por humanos com lápis e papel ou, no máximo, com equipamentos mecânicos. Por esta razão as técnicas eram simples, normalmente atuando na transposição ou substituição de caracteres. Ao contrário do que acontece atualmente, a segurança das técnicas encontrava-se com frequência no segredo da própria técnica aplicada.
Exemplos de técnicas clássicas de substituição são a cifra Atbash (inversão das letras do alfabeto, com origens no hebraico) e a cifra de César (rotação das letras do alfabeto por um número fixo). Na transposição, a ordem das letras ou das palavras na mensagem é alterada segundo algum esquema previamente combinado.
A criptoanálise desenvolveu durante a era medieval técnicas de análise de frequência, na qual as frequências das letras na mensagem são comparadas às frequências médias em textos do idioma da mensagem, permitindo quebrar com facilidade cifras de substituição. Dado o baixo requerimento computacional da análise de frequência, as cifras clássicas são consideradas atualmente como incapazes de fornecer qualquer segurança real, sendo utilizados apenas como formas ocasionais de entretenimento.
A partir do início do século XX começou-se a usar aparelhos mecânicos para aplicar e remover cifras, combinando mensagens em texto puro, chaves secretas e operações matemáticas. A Segunda Guerra Mundial foi prolífica em métodos criptográficos e aparelhos para quebra de cifras; a máquina Enigma tornou-se célebre por ser usada pelo exército alemão durante a guerra e por ter tido sua cifra quebrada pelos aliados, que descobriram segredos militares alemães.
Entre as décadas de 1950 e 1970 a criptografia foi tratada como segredo de estado e muito pouco foi divulgado; suas evoluções voltaram a ser públicas na década de 1970, fundamentadas sobre as teorias de matemática, informação e comunicação e calcadas nos computadores digitais.
4 TÉCNICAS CRIPTOGRÁFICAS MAIS UTILIZADAS E CONHECIDAS
4.1 Criptografia Simétrica
A criptografia simétrica é a forma mais comum de criptografia e a de mais simples entendimento. Os dados a serem protegidos são alimentados a um algoritmo que recebe uma chave secreta e fornece como saída o dado criptografado, ou seja, modificado e aparentemente sem sentido. A informação é então transmitida ao receptor (ou armazenada para uso posterior). Para obter os dados originais, a informação criptografada é alimentada a um algoritmo que realiza um procedimento inverso e, se fornecida a mesma chave secreta, tem como saída os dados originais.
O fato marcante da criptografia simétrica, e origem de seu nome, é o uso da mesma chave secreta (ou de chaves trivialmente relacionáveis) para codificação e decodificação. Para um envio criptografado bem-sucedido, a chave deve ser acordada previamente entre o emissor e o receptor. Surge então o grande problema, que não possui fácil solução: a transmissão da chave. Caso esta transmissão não seja segura o bastante, a segurança de toda a criptografia do dado principal fica abalada. 
Por ser mais intuitiva, a criptografia simétrica era a única forma conhecida até meados da década de 1970. Ela possui vantagens que ainda a fazem ser utilizada até hoje, como a velocidade na codificação e decodificação. Ela também é vantajosa quando a troca de chaves secretas não é um problema, como no armazenamento local de arquivos criptografados. Exemplos de algoritmos de criptografia simétrica são o AES (Advanced Encryption Standard), Blowfish e RC4
4.2 Criptografia Assimétrica
A criptografia assimétrica ou criptografia de chave pública, cujo desenvolvimento teve início em 1976, tem como principal vantagem àquele que era o ponto fraco da criptografia simétrica: as chaves de codificação e decodificação são diferentes, eliminando o problema da comunicação. Os algoritmos usados no processo de criptografia são relacionados, porém um é de resolução muito mais fácil que o outro (chamados funções de mão única) – a chave original, chamada de chave privada, pode dar origem à chave que é divulgada, chamada de chave pública, mas o inverso não é possível em tempo hábil.
Os algoritmos de criptografia assimétrica são em geral baseados em problemas de difícil solução, como curvas elípticas, logaritmos discretos e fatoração de números primos. São exemplos de técnicas de criptografia assimétrica o protocolo Diffie-Hellman de troca de chaves, o algoritmo RSA e o padrão DSA (Digital Signature Algorithm).
Uma das grandes desvantagens da criptografia assimétrica é o custo computacional dos algoritmos, muito mais lentos que os da criptografia simétrica, mesmo se implementados em hardware. Por esta razão as transmissões frequentemente iniciam-se com o envio de uma chave secreta através de criptografia assimétrica, e os dados propriamente ditos – em muito maior quantidade – são enviados codificados com criptografia simétrica. 
4.3 Criptografia Hash
A criptografia hash permite que, através 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 não passe de 512 bytes.
Seja uma função hash H, e x uma string qualquer, teremos que H(x) será o valor hash para a string x.
As características básicas de uma função hash são:
O valor de entrada da função possui qualquer tamanho; 
O valor de saída da função possui tamanho fixo;
H(x) é relativamente fácil de ser computado, para qualquer valor de x;
H(x) é uma função “one-way”;H(x) é livre de colisão.
Uma função hash é dita "one-way”, pois uma vez obtido o valor hash h para uma string x, é computacionalmente impossível fazer o processo inverso, ou seja, encontrar um valor x tal que H(x) = h. 
Diz-se ainda que H(x) é livre de colisão, significando que as funções hash devem garantir uma probabilidade mínima de que duas strings diferentes acabem por resultarno mesmo valor hash. Qualquer alteração na string original que deu origem ao identificador digital, mesmo que de um único bit, acabará por gerar uma alteração significativa no valor hash final.
5 DISSERTAÇÃO 
Nos tempos passados a tecnologia não tinha nem metade do papel quem que ela ocupa hoje, vivemos em uma era mais que tecnológica onde todos tem um computador, seja crianças, adolescentes, adultos ou idosos, atualmente a tecnologia não se divide em idade e nem mais em classes sociais como antigamente, pois estão cada vez mais em conta e uma grande parte da população já vem fazendo parte dessa nova era.
Porém com tantas informações correndo pela internet, os dados das pessoas foram ficando cada vez mais desprotegidos, pois transferências, imagens ou qualquer outro tipo de informação pela rede pode ser interceptado.
Uma das maneiras de melhor proteger esses dados é a criptografia, e como tudo que está relacionado à tecnologia tem que evoluir conforme a evolução dela a criptografia não ficou para trás, tendo diversos tipos de se criptografar.
Tratando de uma especifica, a criptografia de chave simétrica ou chave secreta consiste em nada mais que substituir as letras de uma mensagem após a posição que ela ocupa, um exemplo é pela terceira letra após a sua posição no alfabeto, portanto o texto criptografo varia de acordo com a sua posição ocupada. O texto que utiliza essa maneira de criptografia não é de maneira pública, devido ao seu “fácil” nível de descobrimento da mensagem, diferente de outras.
Por ser uma técnica de criptografar muito básica e simples toda e qualquer pessoa pode efetuar e por não necessitar de grandes conhecimentos para executa-la não é difícil a sua decodificação, pois utiliza a mesma chave que a codificação. 
Partindo desse princípio surgiram outras criptografias como por exemplo a criptografia de chave pública, ou seja, o código criptografo é liberado para qualquer pessoa que queria vê-lo pois utiliza uma chave para a codificação e outra para a decodificação e tornando a descoberta de pessoas que não tenham acesso a chave para a decodificação quase impossível.
Uma das grandes empresas que utilizam a criptografia baseada no processo de chave secreta é a IBM e o governo dos Estados Unidos, que até adotou esse método como criptografia padrão. O método DES codifica blocos de 64 bits de texto normal gerando 64 bits de texto criptografado. O primeiro estágio realiza uma transposição dos bits do texto independentemente da chave. O
ultimo estagio realiza uma transposição ao contrário à do primeiro estágio. O penúltimo estagio realiza a permutação dos 32 bits mais significativos com os 32 bits menos significativos do bloco de dados, os outros 16 estágios executam as mesmas funções (fazem a transformação nos dados, transposição e substituições). O método permite que a decodificação seja feita com a mesma chave usada na codificação, através da execução das mesmas etapas na ordem inversa.
Em uma comparação da criptografia de chave secreta e a criptografia de chave pública, podemos levantar alguns aspectos como funcionalidade, meios de utilização, e as vantagens de cada uma. Na chave secreta o meio para utiliza-la não necessita de muito conhecimento, sua maneira de ser executada é mais simples, pois trata nada mais que a mudança de uma letra pela outra utilizando a mesma chave tanto para codificação como a descodificação e sua mensagem não fica exposta de uma maneira que todos possam vê-la, uma das maiores vantagens para se utilizar essa técnica é um usuário estando perto do outro, pois como a chave utilizada no processo é a mesma, no envio da mensagem pode ocorrer de ser interceptada a mensagem e o meio para descodificar. Já a maneira de chave pública baseia-se em um conceito um pouco diferente porém partindo dos mesmos princípios, nesse método ocorre a utilização de chaves distintas, ou seja, os códigos para a codificação e a descodificação não são mais os mesmos, e ocorre a presença também de números, pelo difícil acesso ou praticamente nula as chances de descobrir o que tem na mensagem não sendo algum “aliado” a mensagem é deixada de maneira publica para que todos possam ver, facilitando o processo de gerenciamento de chaves, pela difícil maneira de descobrir o que há nela é uma boa maneira para se utilizar quando os usuários estão distantes. A principal diferença entre os meios de criptografia simétricos (chave secreta) e assimétricos (chave pública) é a maneira de utilização da chave.
Todo e qualquer processo está sujeito a vulnerabilidades e falhas, e a criptografia de chave secreta não se enquadra fora dessa ideia. Umas de suas maiores vulnerabilidades é a fácil maneira para a descoberta da mensagem, pois um criptografo analisando alguns texto consegue descobrir facilmente a forma utilizada e a exigência de uma chave secreta compartilhada, por isso necessitam ser mudadas frequentemente e mantidas seguras durante a distribuição e no serviço, na grande maioria das vezes são mais lentos do que as outras maneiras de criptografia.
De certa forma não ocorreram mudanças nesse método (Chave Secreta), pois sempre teve o mesmo pensamento, a ideia fixa de alterar as casas das letras do alfabeto, o que podemos chamar de suas “melhorias” são as maneiras de criptografar que se basearam, baseia ou se basearam nessa forma simples porem útil de criptografia chamada chave secreta.
5.1 Criptografia MD5
O MD5 (Message-Digest algorithm 5) é o tipo de codificação/criptografia mais comum atualmente. É um algoritmo de hash, ou seja, mapeia dados de comprimento variável para dados de comprimento fixo, hashes que normalmente são representados por uma sequência de 32 caracteres hexadecimais (sempre), e possui 128 bits unidirecional. Foi desenvolvido pela RSA Data Security, pelo matemático e criptógrafo Ronald Rivest, com objetivo de substituir a MD4 que apresentava diversos problemas de segurança.
A criptografia “esconde” o texto, ou os transforma em informações sem sentido para ninguém ter acesso às cifras, e a partir do momento em que o texto é codificado na MD5, ele não pode retornar ao texto original por se tratar de um algoritmo unidirecional. Desta forma, para realizar a verificação é necessário comparar duas hash, uma da base de dados e outra da tentativa de login.
Outra utilização para o MD5 é a verificação da integridade de um ficheiro, fazendo com que seja possível o download de ficheiros grandes, pois estão sujeitos a corrupção de ficheiros.
O Message-Digest algorithm 5 não pode ser confundido com uma criptografia, pois se trata de uma função criptográfica, pois a criptografia, com uma chave única você consegue cifrar e decifrar mais tarde se necessário, já com a hash, necessita da comparação entre dados citada acima.
Chegou-se a ser desenvolvido o MD6, onde o número de bits do hash aumentou, podendo chegar até 512 bits. Entretanto, o MD6 acabou não sendo utilizado pois foi considerado lento, onde na verdade, os computadores atuais são lentos demais para utilizar o MD6 e sua forma correta.
O problema de segurança do MD4, voltou a aparecer no MD5, pois apresentou falhas na segurança novamente, principalmente depois que o “malware flame”, em 2012, falsificou uma assinatura digita da Microsoft após explorar pontos fracos do Message-Digest algorithm 5.
Um acontecimento raro, mas que pode acontecer com o MD5, é o de gerar DOIS MD5 IGUAIS, onde seriam duas Strings diferentes, porém acabariam resultando em um mesmo MD5.
Para aumentar a segurança em alguns sistemas, usa-se a tática de adicionar um texto fixo no texto original a ser codificado. Deste modo se o sal for "wiki" e a senha for "1234", a pseudo-senha poderá ser "wiki1234" e assim mesmo que alguém tenha o MD5 de 1234 por ser uma senha comum ele não terá de wiki1234. Porém caso o "sal" seja simples como no exemplo e houver o MD5 de "wiki1234" é possível descobrir o sal e deste modo decodificar as senhas mais comuns. Por este motivo geralmente o "sal" é algo complexo.
6 RELATÓRIOCOM AS LINHAS DE CÓDIGO DO PROGRAMA
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CriptografiaMD5
{
 static class Program
 {
 /// <summary>
 /// Ponto de entrada principal para o aplicativo.
 /// </summary>
 [STAThread]
 static void Main()
 {
 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new Form1());
 }
 }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
namespace CriptografiaMD5
{
 /// <summary>
 /// Classe com as funções do programa
 /// </summary>
 class Crypt
 {
 /// <summary>
 /// Criar uma string para dar início
 /// </summary>
 const string senha = "12345";
 public static string Criptografar(string Message)
 {
 /// <summary>
 /// Função para Criptografar o valor/texto inserido, salvando na memória
 /// </summary>
 byte[] Results;
 System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
 /// <summary>
 /// Utilização dos serviços de Criptografia MD5
 /// </summary>
 MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
 byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(senha));
 TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
 TDESAlgorithm.Key = TDESKey;
 TDESAlgorithm.Mode = CipherMode.ECB;
 TDESAlgorithm.Padding = PaddingMode.PKCS7;
 byte[] DataToEncrypt = UTF8.GetBytes(Message);
 try
 {
 /// <summary>
 /// O "ICryptoTransform" torna possível as operações de Encriptação e Decriptação
 /// </summary>
 ICryptoTransform Encryptor = TDESAlgorithm.CreateEncryptor();
 Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length);
 }
 finally
 {
 TDESAlgorithm.Clear();
 HashProvider.Clear();
 }
 /// <summary>
 /// Retornar os resultados
 /// </summary>
 return Convert.ToBase64String(Results);
 }
 public static string Descriptografar(string Message)
 {
 /// <summary>
 /// Função para Descriptografar o valor/texto já criptografado, salvando na memória
 /// </summary>
 byte[] Results;
 System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
 MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
 byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(senha));
 TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
 TDESAlgorithm.Key = TDESKey;
 TDESAlgorithm.Mode = CipherMode.ECB;
 TDESAlgorithm.Padding = PaddingMode.PKCS7;
 byte[] DataToDecrypt = Convert.FromBase64String(Message);
 try
 {
 /// <summary>
 /// O "ICryptoTransform" torna possível as operações de Encriptação e Decriptação
 /// </summary>
 ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor();
 Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length);
 }
 finally
 {
 TDESAlgorithm.Clear();
 HashProvider.Clear();
 }
 /// <summary>
 /// Retornar os resultados
 /// </summary>
 return UTF8.GetString(Results);
 }
 }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CriptografiaMD5
{
 public partial class Form1 : Form
 {
 public Form1()
 {
 InitializeComponent();
 }
 private void Form1_Load(object sender, EventArgs e)
 {
 }
 /// <summary>
 /// Ações dos botões para Criptografar e Descriptografar
 /// </summary>
 private void bt_encrypt_Click(object sender, EventArgs e)
 {
 string strToCript = txt_toEncript.Text;
 strToCript = Crypt.Criptografar(strToCript);
 txt_ResultEncript.Text = strToCript;
 }
 private void bt_decrypt_Click(object sender, EventArgs e)
 {
 string strToDecript = txt_toDecript.Text;
 strToDecript = Crypt.Descriptografar(strToDecript);
 txt_ResultDecript.Text = strToDecript;
 }
 }
}
namespace CriptografiaMD5
{
 partial class Form1
 {
 /// <summary>
 /// Variável de designer necessária.
 /// </summary>
 private System.ComponentModel.IContainer components = null;
 /// <summary>
 /// Limpar os recursos que estão sendo usados.
 /// </summary>
 /// <param name="disposing">true se for necessário descartar os recursos gerenciados; caso contrário, false.</param>
 protected override void Dispose(bool disposing)
 {
 if (disposing && (components != null))
 {
 components.Dispose();
 }
 base.Dispose(disposing);
 }
 #region Código gerado pelo Windows Form Designer
 /// <summary>
 /// Método necessário para suporte ao Designer - não modifique 
 /// o conteúdo deste método com o editor de código.
 /// </summary>
 private void InitializeComponent()
 {
 /// <summary>
 /// Todas as configurações de cada botão do programa
 /// </summary>
 this.bt_encrypt = new System.Windows.Forms.Button();
 this.bt_decrypt = new System.Windows.Forms.Button();
 this.txt_ResultEncript = new System.Windows.Forms.TextBox();
 this.txt_toEncript = new System.Windows.Forms.TextBox();
 this.txt_ResultDecript = new System.Windows.Forms.TextBox();
 this.txt_toDecript = new System.Windows.Forms.TextBox();
 this.label1 = new System.Windows.Forms.Label();
 this.label2 = new System.Windows.Forms.Label();
 this.label3 = new System.Windows.Forms.Label();
 this.label4 = new System.Windows.Forms.Label();
 this.SuspendLayout();
 // 
 // bt_encrypt
 // 
 this.bt_encrypt.Location = new System.Drawing.Point(96, 194);
 this.bt_encrypt.Name = "bt_encrypt";
 this.bt_encrypt.Size = new System.Drawing.Size(217, 42);
 this.bt_encrypt.TabIndex = 0;
 this.bt_encrypt.Text = "Encriptar";
 this.bt_encrypt.UseVisualStyleBackColor = true;
 this.bt_encrypt.Click += new System.EventHandler(this.bt_encrypt_Click);
 // 
 // bt_decrypt
 // 
 this.bt_decrypt.Location = new System.Drawing.Point(459, 194);
 this.bt_decrypt.Name = "bt_decrypt";
 this.bt_decrypt.Size = new System.Drawing.Size(217, 42);
 this.bt_decrypt.TabIndex = 1;
 this.bt_decrypt.Text = "Decriptar";
 this.bt_decrypt.UseVisualStyleBackColor = true;
 this.bt_decrypt.Click += new System.EventHandler(this.bt_decrypt_Click);
 // 
 // txt_ResultEncript// 
 this.txt_ResultEncript.Location = new System.Drawing.Point(96, 133);
 this.txt_ResultEncript.Name = "txt_ResultEncript";
 this.txt_ResultEncript.Size = new System.Drawing.Size(217, 20);
 this.txt_ResultEncript.TabIndex = 2;
 // 
 // txt_toEncript
 // 
 this.txt_toEncript.Location = new System.Drawing.Point(96, 79);
 this.txt_toEncript.Name = "txt_toEncript";
 this.txt_toEncript.Size = new System.Drawing.Size(217, 20);
 this.txt_toEncript.TabIndex = 3;
 // 
 // txt_ResultDecript
 // 
 this.txt_ResultDecript.Location = new System.Drawing.Point(459, 133);
 this.txt_ResultDecript.Name = "txt_ResultDecript";
 this.txt_ResultDecript.Size = new System.Drawing.Size(217, 20);
 this.txt_ResultDecript.TabIndex = 4;
 // 
 // txt_toDecript
 // 
 this.txt_toDecript.Location = new System.Drawing.Point(459, 79);
 this.txt_toDecript.Name = "txt_toDecript";
 this.txt_toDecript.Size = new System.Drawing.Size(217, 20);
 this.txt_toDecript.TabIndex = 5;
 // 
 // label1
 // 
 this.label1.AutoSize = true;
 this.label1.Location = new System.Drawing.Point(93, 63);
 this.label1.Name = "label1";
 this.label1.Size = new System.Drawing.Size(103, 13);
 this.label1.TabIndex = 6;
 this.label1.Text = "String para Encriptar";
 // 
 // label2
 // 
 this.label2.AutoSize = true;
 this.label2.Location = new System.Drawing.Point(93, 117);
 this.label2.Name = "label2";
 this.label2.Size = new System.Drawing.Size(55, 13);
 this.label2.TabIndex = 7;
 this.label2.Text = "Resultado";
 // 
 // label3
 // 
 this.label3.AutoSize = true;
 this.label3.Location = new System.Drawing.Point(456, 63);
 this.label3.Name = "label3";
 this.label3.Size = new System.Drawing.Size(100, 13);
 this.label3.TabIndex = 8;
 this.label3.Text = "String Criptografada";
 // 
 // label4
 // 
 this.label4.AutoSize = true;
 this.label4.Location = new System.Drawing.Point(456, 117);
 this.label4.Name = "label4";
 this.label4.Size = new System.Drawing.Size(55, 13);
 this.label4.TabIndex = 9;
 this.label4.Text = "Resultado";
 // 
 // Form1
 // 
 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
 this.ClientSize = new System.Drawing.Size(800, 285);
 this.Controls.Add(this.label4);
 this.Controls.Add(this.label3);
 this.Controls.Add(this.label2);
 this.Controls.Add(this.label1);
 this.Controls.Add(this.txt_toDecript);
 this.Controls.Add(this.txt_ResultDecript);
 this.Controls.Add(this.txt_toEncript);
 this.Controls.Add(this.txt_ResultEncript);
 this.Controls.Add(this.bt_decrypt);
 this.Controls.Add(this.bt_encrypt);
 this.Name = "Form1";
 this.Text = "Frm_crypt";
 this.Load += new System.EventHandler(this.Form1_Load);
 this.ResumeLayout(false);
 this.PerformLayout();
 }
 #endregion
 private System.Windows.Forms.Button bt_encrypt;
 private System.Windows.Forms.Button bt_decrypt;
 private System.Windows.Forms.TextBox txt_ResultEncript;
 private System.Windows.Forms.TextBox txt_toEncript;
 private System.Windows.Forms.TextBox txt_ResultDecript;
 private System.Windows.Forms.TextBox txt_toDecript;
 private System.Windows.Forms.Label label1;
 private System.Windows.Forms.Label label2;
 private System.Windows.Forms.Label label3;
 private System.Windows.Forms.Label label4;
 }
}
9 BIBLIOGRAFIA
http://www.numaboa.com.br/criptologia/historia/
http://www.gta.ufrj.br/grad/08_1/quantica/cap1.html
http://www.di.ufpe.br/~flash/ais98/cripto/criptografia.htm 
http://www.gta.ufrj.br/grad/07_1/ass-dig/TiposdeCriptografia.html#Topic5
C. L. Lucchesi, Introdução à Criptografia Computacional, Editora Papirus/UNICAMP, 1986.
J. Franco e E. Kerr, Criptologia: Protegendo a Informação na Era da Informação, ConteXto, nº 6, mar. 1995.
Spyman, Introdução Manual Completo do hacker, Editora Book Express 3ª ed, 2000.

Continue navegando