[Resolvido] Descriptografar senha salva em arquivo

11 respostas
J

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

11 Respostas

M

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 ?

J

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 ?

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

E

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.

O

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

J

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:

E

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.

J

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.

Vou pesquisar a respeito

E

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

Vou ver se acho isso

E

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.

J

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

J

Boa! Isso resolveu o meu problema :smiley:

Obrigado pela atenção

Criado 22 de agosto de 2012
Ultima resposta 24 de ago. de 2012
Respostas 11
Participantes 4