TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Exercicios de Concurso Segurança da Informação

Por:   •  20/8/2016  •  Trabalho acadêmico  •  2.484 Palavras (10 Páginas)  •  326 Visualizações

Página 1 de 10

MD5

O MD5 (Message-Digest algorithm 5) é um algoritmo de hash de 128 bits unidirecional desenvolvido pela RSA Data Security, Inc., descrito na RFC 1321, usado por softwares com protocolo ponto-a-ponto (P2P), verificação de integridade e logins. Por ser um algoritmo unidirecional, um hash MD5 não pode ser transformado novamente na password (ou texto) que lhe deu origem. O MD5 também é usado para verificar a integridade de um ficheiro através, por exemplo, do programa md5sum, que cria a hash de um ficheiro. Isto pode-se tornar muito útil para downloads de ficheiros grandes, para programas P2P que constroem o ficheiro através de pedaços e estão sujeitos à corrupção de ficheiros. O MD5 é de domínio público para uso em geral, a partir de uma mensagem de um tamanho qualquer, ele gera um valor hash de 128 bits; com este algoritmo, é computacionalmente impraticável descobrir duas mensagens que gerem o mesmo valor, bem como reproduzir uma mensagem a partir do seu digest. O algoritmo MD5 é utilizado como mecanismo de integridade em vários protocolos de padrão Internet (RFC1352, RFC1446, etc.), bem como pelo CERT e CIAC. Message Digests são funções hash que geram código de tamanho fixo, em uma única direção, a partir de dados de tamanho arbitrário. Esses códigos hash são extremamente úteis para segurança de senhas. Como ele não pode ser descriptografado, o código hash precisa ser regenerado e comparado com a sequência disponível anteriormente. Se ambos se igualarem, o acesso é liberado. A API Java implementa dois algoritmos de Message Digest: o MD5 e o SHA-1.

Código: Abaixo podemos observar um código MD5:

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

public class Criptografia {

//método para geração do algoritmo

private static MessageDigest md = null;

static {

try {

md = MessageDigest.getInstance("MD5");

/*

Após a chamada a getInstance(), você possui uma referência a um objeto pronto para criptografar seus dados utilizando o algoritmo especificado. Neste caso o MD5.

*/

} catch (NoSuchAlgorithmException ex) {

ex.printStackTrace();

}

}

//criando um método estático para gerar a chave criptografada

private static char[] hexCodes(byte[] text) {

char[] hexOutput = new char[text.length * 2];

String hexString;

for (int i = 0; i < text.length; i++) {

hexString = "00" + Integer.toHexString(text[i]);

hexString.toUpperCase().getChars(hexString.length() - 2,

hexString.length(), hexOutput, i * 2);

}

return hexOutput;

}

//criando um método público que receberá o texto a ser criptografado

public static String criptografar(String pwd) {

if (md != null) {

return new String(hexCodes(md.digest(pwd.getBytes())));

}

return null;

}

}

//fazendo chamadas a esta classe

public static void main(String[] args){

String senha = " senhadeteste ";

System.out.println(Criptografia.criptografar(senha));

}

SHA-1

O Secure Hash Algorithm tem como função um espalhamento unidirecional que gera um valor hash de 160 bits com base no tamanho eventual da mensagem, resultando em uma string com o tamanho de 40 caracteres. Seu funcionamento é quase semelhante ao MD5, visto que o SHA-1 foi criado com base nele. SHA-1 faz parte de várias aplicações e protocolos de segurança, tais como TLS, SSL, PGP, S/MIME e IPsec. Ele também é utilizado em sistemas de controle distribuídos com a tarefa de identificar revisões e detectar corrupção de dados.

Abaixo mostra o método que usará SHA-1 para criar um hash e, logo em seguida, devolver ele criptografado. O método GetSHA1HashData serve para inserir um string diretamente.

Hash usando SHA-1

private string GetSHA1HashData(string data)

{

SHA1 sha1 = SHA1.Create();

byte[] hashData = sha1.ComputeHash(Encoding.Default.GetBytes(data));

StringBuilder returnValue = new StringBuilder();

for (int i = 0; i < hashData.Length; i++) {

returnValue.Append(hashData[i].ToString());}

return returnValue.ToString();

}

Comentário: vai receber uma string e assim criar um hash.

Método para validar

private bool ValidateSHA1HashData(string inputData, string storedHashData){

string getHashInputData = GetSHA1HashData(inputData);

if (string.Compare(getHashInputData, storedHashData) == 0){

return true;

}

else

...

Baixar como (para membros premium)  txt (15.3 Kb)   pdf (104.1 Kb)   docx (18 Kb)  
Continuar por mais 9 páginas »
Disponível apenas no TrabalhosGratuitos.com