2009-10-26 7 views
3

J'ai fait une application en Java. Maintenant, je veux le livrer à plusieurs clients. Je veux que chaque client doit acheter une clé de série pour utiliser ce logiciel. Sans cette clé, le logiciel ne devrait pas être exécuté comme les autres logiciels du marché.Comment ajouter une fonctionnalité de licence à un programme Java?

Comment puis-je faire cela?

Je sais que je ne peux pas le protéger complètement. Je veux juste une fonctionnalité de clé de série simple, de sorte qu'il serait difficile pour les personnes non techniques et les programmeurs débutants de casser la sécurité.

+2

Vous devez indiquer clairement à qui vous tentez de vous protéger. Les réponses seront différentes en fonction de la difficulté à copier. La réponse n'est pas simplement de le rendre aussi difficile que possible parce que cela peut exiger plus d'efforts que de valeur dans les ventes. – jprete

Répondre

1

J'ai mentionné EasyLicencer (qui fournit un niveau décent de protection contre le reverse engineering) dans un précédent answer. Vous trouverez d'autres options dans la discussion. Pour une solution open source, jetez un oeil à TrueLicense Library Collection mais cela pourrait nécessiter plus de travail de votre part.

7

Des bibliothèques sont disponibles sur le marché. (Une recherche rapide sur Google a révélé un produit appelé JLicense, par exemple.) Mais ce n'est pas difficile et aussi plus flexible pour implémenter votre propre mécanisme. Une approche simple consisterait à calculer le hachage SHA-1 du nom du client plus du sel codé en dur. Encodez le résultat sous forme de caractères alphanumériques et vous obtenez une clé de licence. Maintenant, quand quelqu'un va installer votre produit, demandez leur nom de client et la clé de licence. Recalculez le hachage et comparez-le à la clé du client que l'utilisateur vous a fournie pour authentifier la clé.

Ce n'est qu'un exemple simple. Il y a toutes sortes de choses que vous pouvez faire, y compris le cryptage de certaines données et leur stockage dans la clé (par exemple, une date d'expiration ou un sous-ensemble de fonctionnalités déverrouillées). Vous pouvez le rendre aussi simple ou compliqué que vous le souhaitez. Cependant, gardez à l'esprit que toute solution que vous proposez peut être réorientée par quelqu'un d'assez compétent et motivé, à moins d'utiliser un système d'authentification distribué. Ceci est sans doute plus facile à réaliser en Java qu'avec des langages compilés natifs comme C ou C++. Obfuscating le code peut aider.

+0

Est le système d'authentification distribué JLicense. Cela peut-il être inversé par quelqu'un? –

Questions connexes