Como criptografar uma TextField de password

20 respostas
R

Como criptografar uma TextField de password usando ********.

20 Respostas

T

Não use uma JTextField e sim uma JPasswordField :stuck_out_tongue:

R

Então dessa forma ele ja fica criptografado com ****.

T

Não, ele não criptografa nada.
Ele simplesmente mostra estrelinhas para quem está entrando com a senha.
Para criptografar, use algum algoritmo de criptografia disponível no Java.

R

Pó cara valewwww.

jj_df

Cara, eu uso o SHA1 que é um tipo de criptografia só de ida, criptografado em 128bits, dessa forma vc nunca vi saber qual é a senha do usuário...

Como comparar para validar???

Pega o que o cara digitar e criptografa, aí você compara com o que está armazenado no banco... Funcional e seguro!!!

Segue o código:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Sha1 {
    
    public String encriptar(String senha) throws NoSuchAlgorithmException
    {
        if (senha.length()==0)
        {
            return null;
        }
        else
        {
            MessageDigest md = MessageDigest.getInstance("SHA1");
            md.update(senha.getBytes());
            byte[] hash = md.digest();
            StringBuffer senhaEncrip = new StringBuffer();
            for (int i=0;i<hash.length;i++)
            {
                senhaEncrip.append(Integer.toHexString(hash[i]&0xff));
            }
            return senhaEncrip.toString();
        }
    }
}
L

e para descriptografar com o SHA1?

francislon

Não descriptografa ^^

jj_df

Olha, num vou dizer que não descriptografa porque eu acredito que em informática tudo é possível…

Mas descriptografar 128bits eu só ouvi falar que quem conseguiu foi a NASA com 7 supercomputadores e o algoritmo rodando um tempão(anos), logo, esse código aí em cima é bem seguro!!!

francislon

Realmente, eu quis falar que uma pessoa normal não descriptografa :)…

O

O algoritmo SHA-1 gera um hash de 160 bits e não de 128 bits.
http://en.wikipedia.org/wiki/Sha1

Utilize o algoritmo Base64 para representar o hash como String.

jj_df

Então vc quer dizer que o Base64 descriptografa o SHA1???

Massa, até onde eu sabia o SHA1 criptografava com 128bits mas, aí, se o Base64 descriptografa o SHA1 alguém conhece algum algoritmo que não rola de descriptografar??

O

NÃO!!! Onde no meu post eu escrevi que Base64 descriptografa SHA-1???

O que eu escrevi foi que no trecho de código enviado, ao invés de transformar o hash (você sabe o que é Hash?) em uma sequencia de bytes (byte[]) e converter para uma String, o melhor é representar esta sequencia de bytes no formato Base64.
PS: Entendendo melhor o código, verifiquei que o que está sendo gerado é uma representação em hexadecimal de cada byte.

O algoritmo de “Message Digest” que gera um hash de 128 bits é o MD5.

De novo, eu nunca afirmei que isto. Base64 nem é um algoritmo de criptografia: http://pt.wikipedia.org/wiki/Base64
Todos os algoritmos de “Message Digest” ou “Hash” (MD4, MD5, SHA-1, SHA-256, SHA-512, RIPEMD-160) são algoritmos de “one-way”, ou seja, geram uma saída “sem volta”.

bcruz

Hmm legal ateh entenda que seja um caminho sem volta, mas alguém poderia me dar uma sugestão de como eu poderia devolver a senha do usuário em um “esqueci senha” da vida tendo esta criptografada???

seria melhor eu gerar uma senha randomica enviá-la por e-mail, criptografar e gravá-la no banco??

não gosto dessa abordagem porque outra pessoa poderia inserir os dados do usuário e assim resetar a senha deste.

ps.: não queria usar um formulário para verificar a autenticidade do usuário.

caso não veja outra saída … ok :roll:

vlw ae pessoal :twisted:

Marky.Vasconcelos

Eu fiz um programinha que dando o determinado sha1 ou md5 da senha ele cria milhares de Strings e compara seu hash com essas até encontrar um valor que coincida, mas é um processo demorado mas não impossível.

Marky.Vasconcelos

bcruz:
Hmm legal ateh entenda que seja um caminho sem volta, mas alguém poderia me dar uma sugestão de como eu poderia devolver a senha do usuário em um “esqueci senha” da vida tendo esta criptografada???

seria melhor eu gerar uma senha randomica enviá-la por e-mail, criptografar e gravá-la no banco??

não gosto dessa abordagem porque outra pessoa poderia inserir os dados do usuário e assim resetar a senha deste.

ps.: não queria usar um formulário para verificar a autenticidade do usuário.

caso não veja outra saída … ok :roll:

vlw ae pessoal :twisted:

Se na hora do cadastro voce pedir um e-mail e enviar esta senha pra esse email acho que é a opção mais viavel nesse caso, e mesmo sendo criptografada ou não voce não vai enviar a senha original dele para o email.

bcruz

Imagina a seguinte situação.

O usuário se cadastra
login
senha
email

depois de 1 mes ele esqueceu a senha …
a senha está criptografada no banco. existe alguma maneira de reenviar a senha a este usuário?

S

bcruz:
Imagina a seguinte situação.

O usuário se cadastra
login
senha
email

depois de 1 mes ele esqueceu a senha …
a senha está criptografada no banco. existe alguma maneira de reenviar a senha a este usuário?

Mude a senha para uma aleatória temporária e envia pra ele.

bcruz

pensei nisso mas ae cai no problema que mencionei antes…

outra pessoa senão o usuário em posse do e-mail pode “resetar” a senha do cara. ok ele nunca iria conseguir logar mas poderia ficar resetando a senha do cara toda hora

S

você pode mandar um email antes requisitando que ele clique num link para gerar uma nova senha.

bcruz

show mano

soluciona o problema, melhor que cadastrar pavra-chave, lembrete …

vlw ae, abraço

Criado 8 de maio de 2006
Ultima resposta 15 de jul. de 2008
Respostas 20
Participantes 9