Descriptografar MD5

Salve!

Estou tentando há algum tempo fazer a descriptografia de uma senha em md5, porém, não sei qual API em java que me auxiliaria nessa tarefa!

Fiz alguns testes de criptografia usando java.security.MessageDigest, porém, não consigo fazer o processo inverso. Li a documentação mas não vi nenhum método que faça isso.

alguém pode me ajudar?

obrigado. 8O

MD5 é um algoritmo de hash unidirecional e, portanto, uma vez criptografados, os dados não podem mais ser descriptografados.

Conselho: Se descobrir como descriptografar, venda pra Nasa.
hiihih

hm…

hehhe esses dias vi um tópico aqui de um chines, se nao me engano, que quebrou o a codificaçÃo MD5 e SHA-1…

Pergunta pra ele como faz ehehhe :grin:

Pois é!

http://en.epochtimes.com/news/7-1-11/50336.html

8O

A codificação do MD5 é unidirecional. Logo, se vc criptografar os dados NÃO conseguirá descriptografá-los.

não entendo nada disso não, mas qual a finalidade de vc criptografar e não conseguir mais decriptografar a sua informação?

a informação se mantem segura para quem não conheçe do q se trata aquilo…

vc consegue sim, criptografar uma informação e comparar com a q ja esta criptografada, isso a grosso modo…

Bom … é o seguinte, não foi fácil, mais eu estava com esse mesmo problema esses dias… então segue ai a solução…

aj221ca64543574ev3254ga1239424387

supomos que temos esse MD5 que por acaso é minha senha…
vamos descriptografa-la:

Não vou dar o código assim fácil né ! hehehe… mais segue a lógica…

Separe as letras dos números, e o que sobra é:

ajcaevga

Agora ficou fácil, pegue apenas as letras de índice par… e a senha é …

ajcaevga

java

Espero ter ajudado… estou tentando quebrar agora a SHA-512

Qualquer coisa eu posto novamente abraços !

caro javerson…

pela sua lógica, o Hash aa5717e6412e75ecd6c6dca6632b8f2b

tirando os numeros ficaria: aaeeecdcdcabfb

então a senha seria: aecccbb ???

a senha criptografada para gera esse Has foi h4e8riew, se vc reparar o Hash não possui as letras h,r,i,w q estão na senha…e se a senha tiver numeros???

ajuda a gente a entender o seu raciocinio…eu ateh o pouco q eu conheço, a forma de se quebrar MD5 eh atraves de Rainbow Tables

bom…acho q a discussão sobre isso vai longe, hehehehe

vlw

Olá pedrobusto,

A classe que o pessoal do GUJ me passou para criptografia MD5(Marcelo Dimas version 5.0) foi a seguinte…

[code]/**@author Marcelo Dimas/

  • @version 5
    */
    public class MD5 {

public String encrypt(String enc){
String RESULTADO = "";
for(int i = 0; i < enc.length(); i++){
RESULTADO += getNUMBER();
RESULTADO += getKEY();
RESULTADO += enc.substring(i, i+1);
}
return RESULTADO;
}

public String getKEY(){
return new Character((char)(Math.random()*23+97)).toString();
}

public String getNUMBER(){
return String.valueOf(Math.round(Math.random() * 1000 % 999));
}

public static void main(String[] args) {
System.out.println(new MD5().encrypt("java"));
}

}[/code]

Essa classe está licensiada pelo LGPL, se quiser pode utiliza-la.

Creio que você deve ter se enganado sobre Rainbow Tables, nem tem isso nessa classe :grin: … mais belesa a gente ta aqui pra se ajudar… hj foi minha vez de te ajudar… amanha alguem pode precizar de voçe.

Se quiser lhe mando no email… a classe que estou fazendo pra criptografia SHA …

Abraços…

Concordo com o colega pedrobusko, Rainbow Tables é realmente o melhor caminho, eu possuo uma tabela de Rainbow de 37 gb, são todas as combinações possíveis de 3 a 10 dígitos usando os caracteres do 32 ao 196 da tabela ascII.
O que levaria anos p ser desvendado, acaba levando 10 min, isso pq está em um banco usando mysql e a máquina é um k6II-500 usando slackware…
É praticamente impossível descubrir uma chave md5, o cara precisa têr uma mente muito louca se conseguir.
Tentar entender o processo chave de como é encriptado é válido, o que é insano, é fazer um algorítimo do tipo BF(brute force) que vá varrendo todas as combinações.

Algo que eu sempre digo quando me perguntam isso:
Quem descobrir como desafazer o md5, vai ter inventado o melhor compactador/descompactador do mundo :stuck_out_tongue:
Imagina, qualquer quantidade absurda de dados compactada em míseros 128 bytes :slight_smile:
Dá pra decorar e levar os dados na mente se quiser hehe.

Bom, falando serio, é só raciocinar um pouco que a gente vê que é impossível desfazer um md5 e obter a chave original com 100% de precisão, porque a quantidade de hashes possíveis, apesar de imensa, é limitada.
Mesmo usando força bruta, rainbow tables, vc só vai obter algo que vc sabe que produz o mesmo hash, mas nunca vai poder afirmar que aquele foi o valor original usado pra produzir o hash(Pode ser que isso seja importante pra vc, pode ser que não…)

Bom dia companheiros, parece que não é tão impossível assim retornar o Hash do MD5 não, como este site: http://md5.rednoize.com/ que faz isso com um grande rapidez, e todos que testei agora, de senha de até 6 digitos, ele fez pereitamente, agora resta sabermos como isso foi feito, abraços a todos.

[quote=lusilva1982PJ]Salve!

Estou tentando há algum tempo fazer a descriptografia de uma senha em md5, porém, não sei qual API em java que me auxiliaria nessa tarefa!

Fiz alguns testes de criptografia usando java.security.MessageDigest, porém, não consigo fazer o processo inverso. Li a documentação mas não vi nenhum método que faça isso.

alguém pode me ajudar?

obrigado. 8O[/quote]

Pergunte para alguém da CIA, MI6… algum serviço de inteligência deve saber… kk :slight_smile:

Meu filho…

Você confundiu criptografia MD5 (Message-Digest algorithm 5) com MD5(Marcelo Dimas version 5.0) ???

kkkkkkkkkkkkk

e antes de tentar aprender java, volta pro ensino fundamental porque você escreve tudo errado!!! kkkkkkk

belesa e precizar

kkkkkkkk

[quote=javersonPJ]Olá pedrobusto,

A classe que o pessoal do GUJ me passou para criptografia MD5(Marcelo Dimas version 5.0) foi a seguinte…

[code]/**@author Marcelo Dimas/

  • @version 5
    */
    public class MD5 {

public String encrypt(String enc){
String RESULTADO = "";
for(int i = 0; i < enc.length(); i++){
RESULTADO += getNUMBER();
RESULTADO += getKEY();
RESULTADO += enc.substring(i, i+1);
}
return RESULTADO;
}

public String getKEY(){
return new Character((char)(Math.random()*23+97)).toString();
}

public String getNUMBER(){
return String.valueOf(Math.round(Math.random() * 1000 % 999));
}

public static void main(String[] args) {
System.out.println(new MD5().encrypt("java"));
}

}[/code]

Essa classe está licensiada pelo LGPL, se quiser pode utiliza-la.

Creio que você deve ter se enganado sobre Rainbow Tables, nem tem isso nessa classe :grin: … mais belesa a gente ta aqui pra se ajudar… hj foi minha vez de te ajudar… amanha alguem pode precizar de voçe.

Se quiser lhe mando no email… a classe que estou fazendo pra criptografia SHA …

Abraços…[/quote]

Para o hash MD5 - aa5717e6412e75ecd6c6dca6632b8f2b
a string e: h4e8riew

[quote=pedrobuskoPJ]caro javerson…

pela sua lógica, o Hash aa5717e6412e75ecd6c6dca6632b8f2b

tirando os numeros ficaria: aaeeecdcdcabfb

então a senha seria: aecccbb ???

a senha criptografada para gera esse Has foi h4e8riew, se vc reparar o Hash não possui as letras h,r,i,w q estão na senha…e se a senha tiver numeros???

ajuda a gente a entender o seu raciocinio…eu ateh o pouco q eu conheço, a forma de se quebrar MD5 eh atraves de Rainbow Tables

bom…acho q a discussão sobre isso vai longe, hehehehe

vlw[/quote]

Um pouco sobre MD5

MD5
Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

O MD5 (Message-Digest algorithm 5) é um algoritmo de hash de 128 bits unidirecional desenvolvido pela RSA Data Security, Inc., descrito na RFC 1321, e muito utilizado por softwares com protocolo ponto-a-ponto (P2P, ou Peer-to-Peer, em inglês) na verificação de integridade de arquivos e logins.

Foi desenvolvido em 1991 por Ronald Rivest para suceder ao MD4 que tinha alguns problemas de segurança. Por ser um algoritmo unidirecional, uma hash md5 não pode ser transformada novamente no texto que lhe deu origem. O método de verificação é, então, feito pela comparação das duas hash (uma da mensagem original confiável e outra da mensagem recebida). O MD5 também é usado para verificar a integridade de um arquivo através, por exemplo, do programa md5sum, que cria a hash de um arquivo. Isto pode-se tornar muito útil para downloads de arquivos grandes, para programas P2P que constroem o arquivo através de pedaços e estão sujeitos a corrupção dos mesmos. Como autenticação de login é utilizada em vários sistemas operacionais unix e em muitos sites com autentificação.

Em 2008, Ronald Rivest e outros, publicaram uma nova versão do algoritmo o MD6 com hash de tamanhos 224, 256, 384 ou 512 bytes. O algoritmo MD6 iria participar do concurso para ser o novo algoritmo SHA-3[1] [2], porém após removeu-o do concurso por considera-lo muito lento, anuncionado que os computadores de hoje são muito lentos para usar o MD6.

Fonte:

bem tem uma maneira… faça um algoritimo que tente todas as combinações de caracteres possiveis… em cerca de 5 min se tiver muita sorte ou 5 trilhões de anos se tiver azar ele descobre pra vc… XD

Hoje em dia o MD5 não é tão confiável… bom, É CONFIÁVEL, mas não tanto assim!
Dado que já existem dezenas de bancos com hashes md5, inclusive disponíveis na internet.
A título de exemplo:

http://md5online.net/

:!: