Como descriptografar uma senha?

Pessoal como que eu faço para descriptografar uma senha que está criptografada no banco? está em base 64.

Cara se a senha está apenas em Base64, creio q vc precisa da classe Base64Decoder.

=D

para sô, ce colocou a senha criptografada em base64???

cada uma…

usa o q o mano aí em cima disse…

depende, vc tem a chave usada para o encrypt? se não tiver não sei se dá pra fazer.

outra coisa, é um encrypt mesmo ou um hash? Se for hash ai não da mesmo.

Se for um hash, voce pode tentar brute force. Mas voce precisa do mesmo algoritmo usado para criptografar para gerar novos hash e ir comparando.

Cara é o seguinte eu vi o seguinte codigo aki no forum…[code]import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.crypto.;
import javax.crypto.spec.
;
import java.security.;
import java.security.spec.
;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.KeySpec;
import sun.misc.BASE64Encoder; // para simplificar o exemplo. Use alguma outra classe para converter
import sun.misc.BASE64Decoder; // para Base-64.
public final class PWSec {
private static SecretKey skey;
private static KeySpec ks;
private static PBEParameterSpec ps;
private static final String algorithm = “PBEWithMD5AndDES”;
private static BASE64Encoder enc = new BASE64Encoder();
private static BASE64Decoder dec = new BASE64Decoder();
static {
try {
SecretKeyFactory skf = SecretKeyFactory.getInstance(algorithm);
ps = new PBEParameterSpec (new byte[]{3,1,4,1,5,9,2,6}, 20);

        ks = new PBEKeySpec ("EAlGeEen3/m8/YkO".toCharArray()); // esta é a chave que você quer manter secreta.   
        // Obviamente quando você for implantar na sua empresa, use alguma outra coisa - por exemplo,   
        // "05Bc5hswRWpwp1sew+MSoHcj28rQ0MK8". Nao use caracteres especiais (como ç) para nao dar problemas.   

        skey = skf.generateSecret (ks);   
    } catch (java.security.NoSuchAlgorithmException ex) {   
        ex.printStackTrace();   
    } catch (java.security.spec.InvalidKeySpecException ex) {   
        ex.printStackTrace();   
    }   
}   
public static final String encrypt(final String text)   
    throws   
    BadPaddingException,   
    NoSuchPaddingException,   
    IllegalBlockSizeException,   
    InvalidKeyException,   
    NoSuchAlgorithmException,   
    InvalidAlgorithmParameterException {   
           
    final Cipher cipher = Cipher.getInstance(algorithm);   
    cipher.init(Cipher.ENCRYPT_MODE, skey, ps);   
    return enc.encode (cipher.doFinal(text.getBytes()));   
}   
public static final String decrypt(final String text)   
    throws   
    BadPaddingException,   
    NoSuchPaddingException,   
    IllegalBlockSizeException,   
    InvalidKeyException,   
    NoSuchAlgorithmException,   
    InvalidAlgorithmParameterException {   
           
    final Cipher cipher = Cipher.getInstance(algorithm);   
    cipher.init(Cipher.DECRYPT_MODE, skey, ps);   
    String ret = null;   
    try {   
        ret = new String(cipher.doFinal(dec.decodeBuffer (text)));   
    } catch (Exception ex) {   
    }   
    return ret;   
}   
public static void main(String[] args) throws Exception {   
    String password = "3p6/Lsbp+MIK8zqK"; // esta é a tal senha do banco de dados que você quer criptografar   
    String encoded = PWSec.encrypt (password);   
    System.out.println (encoded);  // imprime "4fWCjTdEhMPEluqE2n8ci4FiqWeb+DXc"   
    System.out.println (PWSec.decrypt (encoded).equals (password)); // imprime "true"   
    // Vamos alterar um caracter, só para ver o que ocorre   
    char[] enc = encoded.toCharArray();   
    enc[2] = (char) (enc[2] + 1);   
    encoded = new String (enc);   
    System.out.println (encoded); // imprime "4fXCjTdEhMPEluqE2n8ci4FiqWeb+DXc"   
    System.out.println (password.equals (PWSec.decrypt (encoded))); // imprime "false"   
}   

}[/code]

Aí ele só criptografa eu nao entendo nada sobre isso ainda, sou iniciante entao isso atrapalha a mente da gente se alguem pode me explicar isso melhor e me explicar tb como faço para descrip… agradeço

o que vc não entendeu? os métodos de encrypt e decrypt já estão prontos.

Quero saber onde criptografa como ta criptografando se essa classe tb ela discriptpgrafa e como, e onde.

Fui eu que escrevi essa tal classe.
Leandro, vou fazer uma perguntinha para você.
Você já aprendeu trigonometria? Ou seja, já ouviu falar de senos, cossenos, tangentes, radianos?
Eu sei que não parece ter nada a ver com o que você quer saber. Mas é uma coisa que eu quero saber de você.

Thingo num sei nao cara rsrs.

Então fica bem mais difícil. Em que ano do ensino médio ou fundamental você está?

Bom, vou continuar a responder por aqui, até porque sou “da velha guarda” e não tenho Skype ou outros meios instantâneos de comunicação.

A primeira coisa é que você precisa entender o conceito de função.

Uma função é algo que converte um (ou mais valores) em outro. Se é um resultado de um cálculo, ou se é procurado em uma tabela, isso
Por exemplo, você pode ter uma função “calculoDePrestacao”, onde você entra com o “montante” (que é o valor que você vai financiar - digamos que seja aquela TV LCD que você quer comprar e que custa R$ 1500,00 à vista), o “númeroDePrestações” (digamos 12) e a “taxaDeJuros” (digamos 5% ao mês, ou seja, 0.05).
Então:

public static double calculoDePrestacao (double montante, int numeroDePrestacoes, double taxaDeJuros) {
    return ......; // acho que você consegue fazer contas, não? 
}

Você também pode ter uma função “taxaDeJuros” em que você entre com o “valorDaPrestação”, o “montante”, e o “númeroDePrestações”. Isso é mais complicado de achar, mas é como se fosse o “contrário” (inverso) da função acima. Ou seja:

public static double taxaDeJuros (double montante, int numeroDePrestacoes, double valorDaPrestação) {
    return ......; // ok, é um pouquinho mais complicado
}

No caso da criptografia, que é um assunto bastante complicado, você basicamente trabalha com funções também.

Essas funções são construídas de forma que elas tenham inversa (ou seja, é mais ou menos como se fosse a história de achar o “cálculo da prestação” ou a “taxa de juros”.

Só que em vez de você entrar com números, você entra com arrays de bytes, e a saída são arrays de bytes.

Quando você tem uma senha (que é uma string, não um array de bytes), é necessário usar uma outra função que converte uma string em um array de bytes, e vice-versa.

E outra coisa: nas funções de criptografia, a idéia é que se você não tiver todos os dados, então você não consiga nem “chutar” o valor.

tem gente querendo burlar o sistema heheheh

Deu para entender um pouco, então seria eu “somente” pegar meus strings criptografado e tranformar em bytes e o bytes em números?

De certo modo é isso mesmo.

hum…blz, mais olha só uma coisa que me confundiu nisso, tenho uma senha de 6 digitos, quando eu criptografo ela ela me retorna muito mais que 6 caracters criptografado, outra coisa exemplo…Como que eu transformo um caracter em bytes? tipo letra a.

Pessoal eu preciso de uma formula depois eu dou uma estudada mais aprofudada na materia, alguem pode criar um codigo que discriptografa pra min ajuda a terminar um trabalho?(Nao é escolar).

Eu vou colocar um código aqui, mas é muitooooooooo complicado, talvez vc não entenda.

[code]
import org.apache.commons.codec.binary.Base64;

public class Criptografia {
public static String base64Encoder(String s) {
return new Base64().encodeToString(s.getBytes());
}
public static String base64Decoder(String s) {
return new String(new Base64().decode(s));
}
}[/code]

agora é só

Criptografia.base64Encoder(“bla bla bla”);

ou então

Criptografia.base64Decoder(suaString);

o que vc precisa pra usar essa classe ??

o jar que esta anexado neste post

Base64 não é criptografia, você não precisa de uma senha para transformar os dados em algo “légivel”, apenas de um decoder.

Até mais.