[quote=Hebert Coelho]Você poderia usar um ofuscador de código. Desse modo ficaria muito, mas muito dificil mesmo de descobrir a senha usando um descompilador. [=[/quote]Esqueci, Ofuscador + senhas = possível exceção adicionada ao ofuscamento.
[quote=gomesrod]…
EDIT:
Agora percebi que não tenho certeza se o sistema envolve um servidor de aplicação, ou se é 100% desktop[/quote]É… tenho essa impressão também.
Neste caso, se possível, poderia transportar toda a lógica que faz acesso à base a um servidor remoto e praticar as dicas dadas.
A solução como um todo pode ser uma boa idéia, mas tem um erro no que vcs falaram:
MD5 e SHA não são algoritmos de criptografia e sim de Digest (hash), por isso não dá para ler de volta - como o próprio lpbianco disse, realmente não tem como trazer o dado original de volta. Nunca mais.
Se quiser usar essa solução use criptografia/decriptografia e não digest. Por exemplo o algoritmo AES.[/quote]Sinceramente, se for usar algorítmos que permitam descriptografia, é importante analisar as chaves a serem utilizadas e, principalmente, onde serão armazenadas. Se ficarem junto com a aplicação, só vai dar mais trabalho a quem for aplicar a engenharia reversa no código, mas no fim, ele terá acesso…
[quote=gomesrod]Só que mesmo assim nada impede alguém de simplesmente invocar o programa e obter o seu segredo![/quote]É exatamente nesse ponto que eu queria chegar… Não importa se você cria um algorítmo de dificil leitura em código nativo ou se for simples. Também não precisa de nada demais. Tendo o código em mãos, é só achar o ponto da chamada, ver como foi feito e pronto. Você teve acesso à informação que foi retornada!..
Por isso, a chave precisa ser gerada remotamente e que possa ser aleatória (conforme alguma regra qualquer). Esse acesso remoto também precisa ser seguro. Só assim que, realmente é possível dificultar as coisas pra quem quer descriptografar uma informação.
Se ficar local, esquece, na mão de alguém que sabe o que está fazendo, não há segurança para informações que podem ser descriptografadas (ou então, não faça em Java
).