[quote=sergiotaborda][quote=CaioO]Estou com uma dúvida, como criar um sistema de licenças para minha aplicação java. Já existe alguma API? Estou precisando vender softwares mas quero por licenças (seriais)…
[/quote]
A licença tem dois objetivos
- Permitir que o sistema seja usado em conformidade com o contrato
- Validar que o sistema está sendo usado em conformidade com um contrato.
Se o contrato declara uma validade para a licença, isso significa que a licença electronica do sistema expirará no mesmo dia.
Se o sistema não encontrar uma licença válida, ele simplesmente não funciona.
As propriedades que o contrato impoe são variadas e podem ser tão complexas quando o proprio contrato. Portanto é impossivel criar um modelo de licença que atenta a todos.
A forma mais simples de uma licença é a criação de um properties com as propriedades que a licença tem. Data de validade, nome da empresa, numero de usuarios simultaneos, features permitidas, etc…
Depois vc usa um algoritmo de encriptação de chave publica-privada duplo.
O cliente entra no sistema sem licença. O sistema sabe isto e mostra uma tela para entrar dados de licença.
O sistema gera um par de chaves. guarda a privada e envia a publica para si.
Vc gera outro par de chaves. guarda a privada que gerou e a publica que recebeu num sistema de gerenciamento de licenças (sim, vc precisa criar este sistema)
Vc usa as duas chaves para encriptar o arquivo. primeiro a publica vinda do sistema e depois a privada que vc gerou.
Ai vc enviar a publica que vc gerou e o arquivo de licença (se quiser pode inventar um formato de arquivo para mandar as duas coisas num arquivo so).
O sistema verifica que existe um arquivo de licença , a chave privada que ele guardou e a publica que foi enviada. Ele usa os três para abrir o arquivo de properties.
Informações como a ultima data em que o sistema foi usado pode ser guardada no registro usando a Properties API (não a classe Properties).
encriptar isso pode tb ajudar, mas tem que ter cuidado em tratar a ausencia de informações anteriores.
Todo este esquema não evita que alguem faça um hack no seu codigo e modifque as classes que testam as propriedades da licença. Isso é um outro problema. (dica: vc pode codificar as classes com o mesmo algoritmo, e criar um Classloader especial que carregue as classes “autenticas”).
Não vincule a licença a propriedades da máquina porque isso pode mudar (se cara muda a placa de rede ou muda de computador). Vc vai criar trabalho para si mesmo. Mas a escolha é sua…
[/quote]
da mais trampo valida chave e criar chave do que fazer o sistema!
okakoakoakoakoakoakoakoako
gostei da explicação, preciso fazer isso… porém sou iniciante em java e ainda nao entendo algumas coisas que tem ai!
[]´s