Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

novato_PHP

md5 reverso?

Recommended Posts

Bom dia feras!!!!

 

 

Desenvolvi um sistema de cadastro onde a senha do usuario é gravado com md5 no banco.... na hora que a pessoa faz o login eu jogo um md5 na variável $senha e comparo ela com SQL

$senha_crip = md5($senha);SELECT * FROM tabela WHERE login = '$login' and senha = 'senha_crip'";
Até ai tudo bem está funcionado perfeitamente, mais minha dúvida é a seguinte, neste sistema tem um módulo onde o usuário pode mudar sua própria senha e gostaria de exibir ao usuario (depois de logado é claro) a senha dele.. por exemplo sua senha atual é.....

e ai o cara vai mudar a senha dele....

 

Minha pergunta é:

 

como exibir a senha do cara se ela está criptografada com md5?? Tem como descriptografar ela???

 

certo de sua colaboração ,

 

agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isto mesmo, não é possível descriptografar MD5. A única coisa possível de fazer é criptografar e comparar as duas criptografias, ou seja, quando o usuário tentar fazer login, você criptografa a senha que ele digitou e compara esta criptografia com a que está no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jossandro,

 

A única coisa possível de fazer é criptografar e comparar as duas criptografias, ou seja, quando o usuário tentar fazer login, você criptografa a senha que ele digitou e compara esta criptografia com a que está no banco.

È exatamente isto que estou fazendo só gostaria de saber se tem como descriptografar o md5 para exibir pro usuari o na tela a senha dele, mais vi que não tem como ... não tem pbm é só eu fazer uma alteração aqui no meu script....

 

Obrigado.

 

 

TÓPICO RESOLVIDO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você deseja utilizar um método de criptografia que seja reversível, dê uma olhada na extensão Mcrypt.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe resuscitar um tópico antigo e 'resolvido'... mas para quem não conhece ainda: www.md5oogle.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas este site basicamente so descobre coisas simples e o que as pessoas incluem la

 

quanquer coisa mais elaborada ele nao resolve

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como ja foi falado nao existe como é impossivel descriptografar um MD5, o que tem nos sites por ai é que eles salvam inumeras senhas com md5, e assim que a pessoa digita uma senha md5 ele s comparam com o banco de dados dele se ja tiver alguma senha la ele mostram o resultado

 

mas basta criar uma senha dificil que verá que ele nao vai conseguir mostrar o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se quisermos utilizar o sistema de recupere a sua password? Não podemos fazer encriptação pois o valor enviado ao utilizador é um valor encriptado.

 

Nessas situações como ficamos? Não colocamos encriptação para as senhas? :S

 

Deveria haver algum modo de fazer encriptação da senha e depois desencriptar para envio ao cliente caso ele se esqueça.

Ou então uma solução possível seria: quando o cliente solicitar a senha, gerar uma nova senha não encriptada. Mas isso não seria o ideal, pois se alguém soubesse o email do cliente podia estar sempre a fazer recuperação de senha só por maldade e o cliente estaria sempre com novas senhas.

 

:S

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nessas situações como ficamos? Não colocamos encriptação para as senhas? :S

Nessas situações:

 

1. Compreenda a diferença entre hash e criptografia

2. Utilize um algorítimo de criptografia como AES em vez de um hash como MD5:

 

http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se quisermos utilizar o sistema de recupere a sua password? Não podemos fazer encriptação pois o valor enviado ao utilizador é um valor encriptado.

 

Nessas situações como ficamos? Não colocamos encriptação para as senhas? :S

 

Normalmente, gera-se uma nova senha aleatória e pede-se para que o usuário a modifique o mais breve possível.

 

 

Deveria haver algum modo de fazer encriptação da senha e depois desencriptar para envio ao cliente caso ele se esqueça.

 

Existe. Mas MD5 não é uma delas. MD5 não é criptografia; é hash.

 

 

Ou então uma solução possível seria: quando o cliente solicitar a senha, gerar uma nova senha não encriptada. Mas isso não seria o ideal, pois se alguém soubesse o email do cliente podia estar sempre a fazer recuperação de senha só por maldade e o cliente estaria sempre com novas senhas.

 

Mas qual seria a diferença entre mandar a senha gerada ou a senha digitada pelo usuário? O "intruso" teria acesso a ela de qualquer forma. O sigilo do email depende de usuário, não do programador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é a causa do sigilo do email, pois o email pode ser conhecido por muitas pessoas, para isso é que ele serve, para haver comunicação.

Mas de qualquer das formas, podemos fazer qualquer coisa parecida com o base64_encode. É assim que eu coloquei a funcionar.

Abc

 

Pode-se fazer também outra coisa..

Se houver um pedido de recuperação de senha, enviasse um email ao cliente, em que haverá um link que o associa à conta. Então depois de o cliente ir para o link em questão, preenche a nova senha caso pretenda. Se se lembrar, não preenche os campos da nova senha e entra com a antiga.

 

:P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é a causa do sigilo do email, pois o email pode ser conhecido por muitas pessoas, para isso é que ele serve, para haver comunicação.

 

Saber o endereço de email é uma coisa; saber o endereço e a senha para acesso, tendo acesso à mensagens, é outra. É a esse sigilo que me refiro. Ter apenas o endereço de email não fará com que algu[ém tenha acesso à senha enviada pelo sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saber o endereço de email é uma coisa; saber o endereço e a senha para acesso, tendo acesso à mensagens, é outra. É a esse sigilo que me refiro. Ter apenas o endereço de email não fará com que algu[ém tenha acesso à senha enviada pelo sistema.

 

Sim, mas eu sabendo o seu email, e sabendo que você está registado num site, posso estar sempre a fazer recuperação de senha, ou nao?

Você vai estar a receber no seu email constantemente senhas novas. Eu não acho que seja uma boa ideia, ou uma ideia que agrade.

Gostaria estar sempre a receber novas senhas de acesso a um forum por ex? :S

Era a isso que me referia.

O "intruso" não iria conseguir entrar na mesma, mas estaria a ser chato ao estar sempre a solicitar novas senhas para você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O "intruso" não iria conseguir entrar na mesma, mas estaria a ser chato ao estar sempre a solicitar novas senhas para você.

 

Bom argumento, por isso que eu não uso recuperação de senhas, heheheh

 

Imagem PostadaImagem PostadaImagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ja não achei um argumento valido, e acho a recuperação da senha por email muito util e eficiente

 

e a senha com hash é muito mais segura do que base64, o programador nao deve saber a senha dos clientes, por isso se usa criptografia, se tiver um meio facil de recuperar a senha o sistema deixa de ser seguro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Complementando o que eu postei antes, experimente recuperar a sua senha aqui do fórum. Você receberá, antes, uma confirmação de solicitação. Depois que confirmar, será enviada a nova senha provisória. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ja não achei um argumento valido, e acho a recuperação da senha por email muito util e eficiente

 

Eu também a acho útil, por isso a utilizo. E também acho que o programador não deve saber as senhas dos outros clientes. Por isso é que coloquei as dúvidas, tentando obter uma resposta para as melhores soluções.

Eu utilizo encriptação md5, no entanto quando há um pedido de recuperação não é possivel enviar no email a password correspondente, pois esta está encriptada.

A solução neste caso, será mesmo enviar um email ao cliente para confirmar o pedido de recuperação e depois colocar a nova senha através de um form no site.

Abc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já faço diferente. Não peço a confirmação antes de enviar a senha, ao invés disso ao ser solicitado uma recuperação de senha eu consulto o usuário e trago a própria senha criptografada.

 

Construo um link onde esse hash é usado como argumento GET para outro página e envio, com uma mensagem de "desconsidere caso não tenha sido você o solicitante e blah blah blah".

 

Na página à qual esse link aponto, executo nova verificação do hash vindo por GET com o próprio hash armazenado, assim se uma letrinha tiver sido violado, já barro a tentativa.

 

Se tudo ocorrer bem, exibo o formulário para que o dono da conta mesmo troque a senha OU envio altero a senha por outra aleatória e envio por e-mail a nova randomica (depende da ocasião).

 

Acredito ser seguro pois, no primeiro caso, só terá acesso visível ao hash o dono da conta e do e-mail associado à ela. E no segundo, o mesmo, porém o retorno seria a nova senha, com novo hash.

 

Mas, mudando de assunto porém ainda no escopo do tópico:

 

Existem, por exemplo, versões JavaSript do MD5 (como no projeto PHP.JS). Se é possível você criar um algoritimo que gere um MD5 com os recursos nativos de uma linguagem, não seria possível, pelo menos em teoria, fazer o caminho reverso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao é possivel o caminho reverso, e existe algoritimos feitos em PHP tbm

 

vou colar uma resposta que eu ja dei sobre o assunto em 03/02/2005

 

http://www.scriptbrasil.com.br/forum/lofiversion/index.php/t48345.html

 

Existem 3 tipos básicos de algoritimos de criptografia, os 
simétricos, os assimétricos e os de hash. 
Os simétricos e os assimétricos utilizam uma chave de criptografia e podem ser 
descriptografados. 

O hash não podem ser descriptografados, mesmo 
porque o código que ele gera não tem nada a ver com o dado original.

Um "hash" é um código gerado matematicamente a partir de um dado 
original. Ele não é um dado codificado, mas um valor gerado a partir de 
uma origem, e qualquer modificação mínima do dado original implica em um 
hash totalmente diferente. Quer dizer, mesmo que você tenha um arquivo 
de 1 milhao de bytes, a mudança de 1 byte no meio já implica em um hash 
totalmente diferente. É dito que a probabilidade de dois arquivos 
diferentes terem o mesmo hash MD5 é de 1 em 
340282366920938463463374607431768211456 (1 em 2^32).

Vejam tambem que um hash MD5 tem um tamanho fixo de 32 bits sempre, 
portanto não importa o tamanho da entrada de dados, ele sempre terá o 
mesmo tamanho. E por isso é imposível reverter um hash para o valor 
original.

O único modo de quebrar a criptografia de um hash é por força bruta

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.