IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Générer license application


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut Générer license application
    Bonjour,

    Est-ce que quelqu'un sait comment faire pour que mon application java ne puisse être exécutée que sur une seule machine ? J'aimerais créer des licenses avec date d'expiration pour les utilisateurs de mon logiciel.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Une méthode simple, c'est de stocker toutes ces informations dans une chaine de caractère en clair (date d'expiration, utilisateur, nombre de licences, etc). Ton application vérifie ces données un peu partout dans ton code. Ensuite, il te faut une paire de clé publique/privées (cryptographie). Java supporte très bien la cryptographie, autant t'en servir. Tu utilise ta clé privée que tu ne distribue jamais pour encoder cette chaine de caractères (une chaine différente pas client donc). Tu obtiens ainsi un code binaire crypté, que tu transfère à tes clients. Ton application, elle, contient la clé publique, elle l'utilise pour décoder le fichier et obtenir ca chaine de données, qu'elle utilise partout dans son code.


    L'utilisation de clés publiques/privée garanti qu'un utilisateur ne pourra pas générer de fausse licence, elle n'empechera jamais de tripatouiller ton code pour faire sauter la protection.

    Edit: regarde peut etre aussi du coté de truelicence:

    https://truelicense.dev.java.net/

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Merci ça a l'air intéressant, je vais y jeter un coup d'oeil.

  4. #4
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Bonjour tchize, j'ai lu un peu partout sur le net divers articles sur la cryptographie, mais étant assez novice en la matière, pourriez-vous m'expliquer par où je dois commencer ? Avez-vous un bon tuto en ce qui concerne la génération de licenses pour mon application ?

    Merci d'avance.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482

  6. #6
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Bonsoir,

    J'ai lu tous les liens que tu as postés et cela m'a permis de comprendre un peu mieux.
    Pour mon problème de génération de license, dois-je donc commencer par la génération d'une pair de clés privée/publique ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
        // Générer une paire de clef RSA
        public static KeyPair generateKeyPair() throws CryptoException
        {
            try
            {
                KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
                SecureRandom rand = SecureRandom.getInstance("SHA1PRNG");
                keyPairGen.initialize(2048, rand);
                KeyPair keyPair = keyPairGen.generateKeyPair();
     
                return keyPair;
            }
            catch (NoSuchAlgorithmException ex)
            {
                throw new CryptoException("Probleme lors de la création de la pair de clef : "+ex.getMessage());
            }
            catch (InvalidParameterException ex)
            {
                throw new CryptoException("Probleme lors de la création de la pair de clef : "+ex.getMessage());
            }
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        // Crypter avec la clef publique
        public static byte[] cryptWithRSAPublicKey(byte[] plainText,RSAPublicKey clefPublique)
        {
            BigInteger msgEnBigInteger = new BigInteger(plainText);
            BigInteger msgCrypte = msgEnBigInteger.modPow(clefPublique.getPublicExponent(), clefPublique.getModulus());
            return msgCrypte.toByteArray();
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        // Décrypter avec la clef privé
        public static byte[] decryptWithRSAPrivateKey(byte[] cipherText,RSAPrivateKey clefPrivee)
        {
            BigInteger msgADecrypteEnBigInt = new BigInteger(cipherText);
            BigInteger msgDecrypteEnBigInt = msgADecrypteEnBigInt.modPow(clefPrivee.getPrivateExponent(), clefPrivee.getModulus());
            return msgDecrypteEnBigInt.toByteArray();
        }
    Et après ?
    Dois-je maintenant créer un certificat ? et un keystore pour stocker mes clés ? Je suis un peu confus

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/09/2013, 10h35
  2. Réponses: 2
    Dernier message: 03/07/2009, 08h15
  3. Réponses: 3
    Dernier message: 04/05/2009, 14h56
  4. Réponses: 2
    Dernier message: 05/02/2008, 13h29
  5. [EDI] Editeur de haut niveau pour générer une application Web en PHP/MySQL
    Par Speezaker dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 14/12/2007, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo