[Resolvido] Descriptografar senha salva em arquivo

Olá!

Tenho uma aplicação que faz a conexão com o BD a partir da leitura de um arquivo de texto(localizado na pasta do projeto) com os parâmetros de conexão, tais como url, usuário, senha, etc. Gostaria de salvar a senha criptografada no arquivo, mas não sei como fazer o caminho reverso, ou seja, descriptografar na hora de ler e criar a conexão.

Na tela de login, estou validando o acesso do usuário apenas criptografando a senha digitada e comparando com a que está salva no banco.

Mas quanto à conexão com a base de dados, como posso fazer, sendo que o usuário não vai ter acesso a esta senha ?

Gostaria de fazer isso porque senão, qualquer usuário com um pouco de conhecimento conseguirá pegar a senha no arquivo e ter acesso a base de dados!

:-o

Se você for publicar esta app não é interessante que a senha fique visivel em um arquivo texto. (como você disse)

Mesmo salvando a senha criptografada no arquivo você precisará descriptografar no codigo, então,
não seria melhor deixar a senha logo no código da aplicação ?

[quote=magostta]Se você for publicar esta app não é interessante que a senha fique visivel em um arquivo texto. (como você disse)

Mesmo salvando a senha criptografada no arquivo você precisará descriptografar no codigo, então,
não seria melhor deixar a senha logo no código da aplicação ?
[/quote]

O problema é que estes parâmetros mudam conforme o cliente e, se for deixar no código, preciso gerar um .jar para cada um, por isso a idéia do arquivo

Uai, que rotina você está usando para criptografar a senha? Se a biblioteca que você usa não tem um método para descriptografar a senha, ela não serve para nada.

Como dizia um amigo de alta plat, o processo para descriptografar é o mesmo de criptografar, só que ao contrário…

Bom dia! Estou criptografando desta forma:

//MD5 public static String criptografaMd5(String senha) { try { MessageDigest digest = MessageDigest.getInstance("MD5"); digest.update(senha.getBytes()); BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(digest.digest()); } catch (NoSuchAlgorithmException ns) { System.out.println(ns); return senha; } }

Na verdade não sei muito sobre criptografia, talvez tenha como fazer o reverso por aí e eu não saiba… por isso da pergunta :frowning:

Bom, você escolheu um método que não criptografa nada, que é o MD5, e que não pode ser invertido.
Ele serve para você criar uma espécie de “noves fora” da sua senha, ou seja, se você achar uma outra senha que tenha o mesmo valor de MD5, você irá aceitar a senha.
Normalmente ele é usado quando você não pode guardar a senha, mesmo criptografada.

Se você precisa guardar uma senha de banco, precisa usar um método que criptografa e descriptografa, como o AES ou o TripleDES.

[quote=entanglement]Bom, você escolheu um método que não criptografa nada, que é o MD5, e que não pode ser invertido.
Ele serve para você criar uma espécie de “noves fora” da sua senha, ou seja, se você achar uma outra senha que tenha o mesmo valor de MD5, você irá aceitar a senha.
Normalmente ele é usado quando você não pode guardar a senha, mesmo criptografada.

Se você precisa guardar uma senha de banco, precisa usar um método que criptografa e descriptografa, como o AES ou o TripleDES.
[/quote]

Vou pesquisar a respeito

Jean, aqui no GUJ o Thingol deve ter postado um método que é só para isso mesmo.

Vou ver se acho isso

No seu caso, troque os valores “3, 1, 4, 1, 5, 9, 2, 6” para alguma outra coisa, senão alguém conseguirá descriptografar a senha só de ter o programa publicado aqui no GUJ.

Valeu, vou testar! Depois posto o resultado :lol:

Boa! Isso resolveu o meu problema :smiley:

Obrigado pela atenção