Como eu devo lidar com controle de senhas e algoritmos de criptografia para evitar o envio destes nos *.class .
Nos programas em delphi, eu gero esta parte em dll, como eu devo fazer ?
Como eu devo lidar com controle de senhas e algoritmos de criptografia para evitar o envio destes nos *.class .
Nos programas em delphi, eu gero esta parte em dll, como eu devo fazer ?
Sendo mais especifico:
Se eu tenho um algoritmo que não pode ser um fonte aberto, como eu faço pra isso não ser decompilado ? Neste caso eu tenho um algoritmo de criptografia juntamente com a chave, como eu posso fazer isso ?
você pode colocar a string criptografada em um arquivo properties ou em uma variavel do teu sistema e utilizara api de criptografia do java para descriptografa-la 
e o algoritmo, eu criptografo tambem ?
utiliza um dos algoritmos padrões da API
tem DES, 3DES, …
Se eu usar criptografia sempre haverá uma chave para descriptografar (isso já é bem claro) e esta chave estará no código fonte, certo ?? Eu sempre criptografo e envio a chave para descriptografar … no meu caso, eu desenvolvo softwares para terceiros … eu tenho que enviar as classes onde se tem os comandos de login dos usuários … aí que tá o problema … eu não posso deixar estas classes abertas, se não o pessoal de sistema vai saber como quebrar as senhas dos usuários … e isso não pode acontecer de forma alguma … hoje , estes comandos estão dentro de dll, inclusive a chave … o que eu devo fazer ?
Nesse caso específico de controle de senha, não é tão necessário assim ter a chave para descriptografá-la…
Você pode fazer a comparação entre senhas já criptografas:
Ex.:
Você armazena a senha criptografada, e aí na hora que o usuário envia você criptografa essa informação, e compara ambos na versão criptografada.
Isso serve, é o que já utilizo …
Mas e senha para se fazer conexão ao banco de dados ?
O assunto está ficando complicado demais …
O que eu preciso é mais especifico ainda …
eu acho que o que temos aqui é um pqeueno problema de entendimento 
de onde você tirou que por estas senhas hoje estarem em uma DLL elas estão seguras??
tente pegar o edit do dos e abrir a dll, você vai ver todas as strings que estão ali, da mesma maneira que o .class
o que você pode fazer para isto é o seguinte,
as senhas do banco de dados, pede para o usuário por exemplo, isto eu acho uma pessima ideia estar hardcoded na aplicação 
mesmo por que até em um .exe com o edit do dos você ve todas as trings dele 
as senhas dos usuários, em vez de criptografia, utilize um hash md5 por exemplo que é irreversivel, ai em vez de descompacta-las, você compara as senhas criptografadas como sugeriu a Bani,
e se você precisa mesmo guardar a senha do banco de dados, a unica maneira menos insegura que conheço é tanto em java quanto em uma linguagem que vai gerar um .exe (sei que ta ficando chato, e que eu ja disse isto, mas as strings ficam abertas em um .exe também 
não guardar a senha em uma string, e sim em um array com um monte de lixo no meio, e se possivel ja criptografado 
por exemplo.
byte pwd = {0,20, … }
onde tem um monte de lixo entre as letras, que ja vai ter mais lixo ainda por que na maioria das linguagens um array destes é guardado no executavel como inteiros, isto é, quatro bytes pelo menos para cada byte/caracter da tua palavra
ai depois você passa isto para uma função, por exemplo
string password = descramble(pwd);
e esta função conhece os padrões que você utilizou neste array para guardar a senha 
ai não existe uma chave criptografica guardada no .class .exe .dll ou o que for, só um algoritmo inventado na hora para guardar uma seguencia de inteiros/bytes que estara perdida em algum lugar no seu executavel, .class ou dll que como eu ja disse, neste caso não faz a menor diferença 
isso eu faço dentro da dll a senha criptografada e o algoritmo para tazer a senha … mas se for em .class , eu posso decompilar e tazer o algoritmo e , com o algoritmo eu trago a senha …
to achando impossivel de implementar com um minimo de segurança …
tu ja descompilou algum .class??
ele fica simplesmente ininteligivel,
é quase o mesmo que abrir uma dll ou um .exe com um disassembler que gere o codigo novamente em c 
fica pouca coisa mais claro que isto 
Sobre descompilar o class e ele ficar initeligível eu discordo…
Às vezes quando estou com preguiça de pegar o source e quero só dar uma olhadinha rápida no código, simplesmente descompilo o class e fica ótimo! Só faltam os comentários mesmo…
Mas se você usar um obfuscator no class já fica bem mais difícil de descompilar mesmo.

ou eu estava utilizando o descompilador errado ou então tinham utilizado um obfuscator nos poucos .class que ja descompilei até hoje 
qual descompilador você utiliza??
Eu tenho 2, o JAD, que é um bem simplesinho, e o DJ Java Decompiler, que já tem uma interface gráfica e vários recursos.
Mas ambos tem produzido bons resultados. Normalmente só um caracter ou outro sai errado.
DEUS SEJA LOUVADO!
Esse DJ aí só dá uma mexida na estrutura do código, coloca umas coisas pra lá, outras pra cá e etc. Mas quem sabe java entende tudo que está ali dentro.
Galera esta discussão nos informou muito bem sobre o problema de segurança mas após isso eu pergunto tem algo freeware que pelo menos ajuda a proteger o código?
Voce pode confiar que o seu sistema eh tao seguro quanto o codigo dele. Mesmo pq, codigo pode ser descompilado, codigo pode ser alterado em run-time, codigo pode ser zoado de todo tipo de jeito.
Algoritmos bons de criptografia (daqueles que nego passa uma década inventando) não 
Acho que java tem KeyStore justamente para guarda secretkey…
Solução para isso é apenas uma open-soucer :lol: