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

Algorithmes et structures de données Discussion :

Algorithme de génération de clé


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : mai 2017
    Messages : 22
    Points : 30
    Points
    30
    Par défaut Algorithme de génération de clé
    Salut tout le monde. Je développe des logiciels en VB.net et j'aimerai y intégrer un système d'activation par clé. Cependant je cherche un algorithme assez complexe qui me permettra de générer le maximum de clés. J'ai juste besoins de vos propositions pour m'inspirer !

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    février 2013
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : février 2013
    Messages : 210
    Points : 158
    Points
    158
    Par défaut
    Citation Envoyé par Joe Sidik Voir le message
    Salut tout le monde. Je développe des logiciels en VB.net et j'aimerai y intégrer un système d'activation par clé. Cependant je cherche un algorithme assez complexe qui me permettra de générer le maximum de clés. J'ai juste besoins de vos propositions pour m'inspirer !
    A priori le nombre de clés possibles dépend de sa longueur Avec 12 caractères tu peux en faire dans les 400 millions.
    Tous les langages ont un générateur de nombres aléatoires, autant s'en servir.
    Savoir pour comprendre et vice versa.

  3. #3
    Membre confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    mai 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mai 2013
    Messages : 95
    Points : 543
    Points
    543
    Par défaut Générateur aléatoire
    Bonjour,

    La solution du générateur aléatoire est certainement la plus simple et la plus élégante.

    Cependant il faut se méfier d'une chose. Dans de nombreux langages, la génération recommence une même séquence à chaque lancement de programme.

    Il faut alors prendre la précaution d'initialiser le générateur par une valeur (souvent nommée seed pour germe) imprévisible sinon aléatoire. Prendre le nombre (ou une partie basse de ce nombre) de millisecondes de session est souvent une solution.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  4. #4
    Membre expérimenté
    Avatar de emixam16
    Homme Profil pro
    Doctorant en sécurité
    Inscrit en
    juin 2013
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Doctorant en sécurité

    Informations forums :
    Inscription : juin 2013
    Messages : 264
    Points : 1 374
    Points
    1 374
    Par défaut
    Juste une petite remarque sur la génération de licences basées sur des générateurs pseudo aléatoires (PRNG).

    Comme l'ont bien dit Guesset et valentin03, la combinaison PRNG et initialisation avec le temps est la plus classique et marche bien.

    Par exemple en C, l’utilisation classique de la fonction rand est :

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    srand(time(NULL)); // J'initialise mon PRNG (graine) avec le temps actuel (en secondes)
    for( i = 0 ; i < n ; i++ )
        printf("%d\n", rand() % 100); // Je génère des variables entre 0 et 99
    Ça a l'air très bien et ça marche. A chaque exécution j'aurais une séquence de nombres différente et qui paraît aléatoire

    MAIS: Ces nombres ne sont pas vraiment aléatoires, ils sont déterministes!


    En fait, en interne, le PRNG classique de C est un générateur concurrentiel linéaire défini comme (je simplifie légèrement):
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    unsigned int graine;
    void srand(unsigned int gr){
    graine = gr
    }
    int rand() {
        int resultat = ((graine* 1103515245U) + 12345U) & 0x7fffffff;
        graine = resultat
        return resultat;
    }

    Donc on voit bien que derrière la magie on a quelque chose de totalement déterministe et que si on trouve la graine, on pourra avoir la séquence de nombre générés et donc retrouver tes clés! Je trouve ça à la fois assez beau et presque vertigineux: quelque chose qui nous paraît vraiment aléatoire est en fait juste une multiplication, une addition et un masquage.

    Par exemple, si je sais que ma clé est générée en septembre 2019, je peux tester toutes les possibilités, c'est à dire 60*60*24*30 = 2,5 millions. Avec un processeur classique et un gros force brute ça se casse en environ 40 ms!! Même avec un PRNG qui s'initialise à la milliseconde, on reste sous la barre de la minute pour casser le générateur.

    Voilà, tout ça pour dire que ton générateur de clé n'est pas magique, il en existe des très bon et des très mauvais, si possible utilise les bons pour ta génération de clé.

    Pour nuancer mon propos, si les "mauvais" générateurs sont encore utilisés aujourd'hui c'est qu'ils sont hallucinemment plus rapides que les bons. Donc dans un certain nombre de cas ou tu as plus besoin de performances que de sécurité cryptographique, un "mauvais" générateur donc sera bien plus adapté qu'un "bon"!

    Bonne journée

  5. #5
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    août 2013
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : août 2013
    Messages : 394
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonjour.
    Concernant la génération de nombres aléatoires, Denis Hulo a écrit un article (voir le chapitre 6) en utilisant la méthode de Fibonacci:

    https://denishulo.developpez.com/tut...oires-vba/#LVI

    Si ça peut aider ou donner des idées.
    N'hésitez pas à consulter mon mémento sur la programmation en VBA pour EXCEL tome 1.
    Ou le tome 2 qui aborde la programmation en mode graphique avec un exemple de programmation d'un jeu d'arcade en VBA
    Et pour les curieux, le tome 3 qui aborde le problème du voyageur de commerce.
    Le tome 4 est consacré à la cryptologie en VBA et satisfera ceux qui ont besoin de confidentialité.
    Vous découvrirez dans le tome 5 les fonctions SQL pour gérer les tableaux de données et l'application Sentinelle qui veille sur vos fichiers.
    Le tome 6, dernier de la série, vous apprendra à créer des fonctions pour simplifier la vie des utilisateurs.
    Le Crible Quadratique donne toutes les fonctions pour les opérations sur les grands nombres en VBA.
    N'oubliez pas de consulter les FAQ EXCEL et les cours et tutoriels comme par exemple celui de Jean-Marc RABILLOUD qui est très complet.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : mai 2017
    Messages : 22
    Points : 30
    Points
    30
    Par défaut Merci à tous
    Je vous remercie tous pour votre aide... Cela m'a vraiment été d'une très grande utilité !

  7. #7
    Membre chevronné

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 980
    Points : 1 860
    Points
    1 860
    Billets dans le blog
    5
    Par défaut Algorithme de génération de clé
    Bonjour,

    On trouve sur ce site un bon article sur les générateurs de nombres pseudo-aléatoires

    ainsi qu'une courte discussion.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Algorithme de génération des emplois du temps
    Par emmye dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 19/04/2010, 01h32
  2. Algorithme de génération de clé
    Par norwy dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 24/05/2008, 11h23
  3. Algorithme de génération de mdp (alphanum et num)
    Par _SamSoft_ dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 11/09/2007, 20h42
  4. Algorithme de génération de textures.
    Par Disciple195 dans le forum SDL
    Réponses: 2
    Dernier message: 18/06/2007, 21h16

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