Gostaria de contar com a ajuda dos colegas para um problema que encontrei hoje:
Disponibilizo meu JAR para os vendedores utilizarem o sistema, porém se o camarada abrir o JAR com o bloco de notas ele conseguirá garimpar, através dos caracteres inválidos, coisas importantes como: usuário do banco, senha do banco de dados, path de arquivos importantes, etc.
Ou seja, gostaria de saber como criptografar o JAR ou embaralhar os caracteres que o bloco de notas apresenta de forma que eles (vendedores) não visualizem partes do código java.
Pesquisei a respeito na internet sobre o assunto e achei alguns tópios (dos tantos que estão quebrados) falando a respeito do obfuscator, mas nada concreto a respeito.
O obfuscator dificulta a descompilação do programa, mas não esconde as strings dentro do seu programa. Elas devem ser criptografadas, mas o problema é manter a chave secreta de forma que ela também não seja fácil de localizar no seu programa.
De qualquer maneira, o próprio banco de dados tem de ser criptografado. Se você estiver usando o hsqldb, por exemplo, ele não é criptografado.
Eu pessoalmente transformaria a sua aplicação em um cliente e desenvoveria um server como uma API REST pois, ao inves desse jar fazer um
bastaria abrir uma conexão http e fazer um
e parsear a resposta que pode vir como um xml. Nesse caso vc poderia trabalhar com basic authentication para não abrir as portas da api para qualquer um.
Se for muito complicado, vc teria que pensar outra forma de centralizar o acesso ao banco, ou criar usuarios especificos no banco para cada vendedor, etc. Logo vão surgir sugestões melhores