Criptografia sha

2 respostas
tiago.vt

Pessoal estou precisando aprende a usar criptografia SHA, pesquisei bastante pela internet e encontrei varios exemplos, encontrei esse:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
 
public class DigesterDemo {
    public static void main(String[] args) throws NoSuchAlgorithmException {
        //
        // Creates a new instance of Digester, using the SHA-1 algorithm.
        //
        MessageDigest digister = MessageDigest.getInstance("SHA-1");  
 
        byte[] message = "Tiago".getBytes();
        
        digister.update(message);        
        
        //
        // Creates a disgest from a array of byte message.
        //
        byte[] digest = digister.digest(message);   
         
        System.out.println(digister.digest());           
        System.out.println("Digest = " + new String(digest));
        System.out.println("Digest = " + Arrays.toString(digest));
    }
}

gostaria de saber se quando eu do o digister.digest() a mensagem já está criptografada?? e kal a diferença do String(digest) e Arrays.toString(digest)

e como que eu faço pra pega a mensagem criptografada e descriptografar ela??

2 Respostas

T

a) SHA-1 não é um algoritmo de criptografia, assim como o MD5 também não é um algoritmo de criptografia.
Ele serve para achar uma “impressão digital” dos seus dados.
Por isso, ele não serve para você esconder (criptografar) alguma coisa que quer depois revelar (decifrar).
É só você pensar um pouco: o SHA-1 gera sempre um array de 20 bytes (160 bits) de saída, assim como o MD5 gera sempre um array de 16 bytes (128 bits) de saída. É impossível compactar todos os tipos de dados para exatamente 20 bytes; se isso fosse possível, você não precisaria baixar um episódio do Lost em HD com 6 GB de tamanho, e sim simplesmente calcular seu SHA-1, que ocuparia exatamente 20 bytes e poderia ser simplesmente um link numa página HTML.
b) Não use nem new String (digest) nem String.toBytes (digest). É que ambas as formas corrompem o resultado. Você deve converter o array de bytes para sua representação hexadecimal (dá uma string de 40 caracteres no caso do SHA-1).

rod

Tem dois posts no meu blog sobre criptografia, um utilizando TripleDES e outro MD5/SHA

TripleDES:
http://www.rodrigolazoti.com.br/?p=251

MD5/SHA
http://www.rodrigolazoti.com.br/?p=81

Espero que ajude! :wink:
[]'s

Criado 19 de julho de 2009
Ultima resposta 20 de jul. de 2009
Respostas 2
Participantes 3