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

C++ Discussion :

Générer clé unique


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Octobre 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 11
    Par défaut Générer clé unique
    Bonjour à tous,

    J'aimerai construire une clé entière (int,long...) unique à partir de 4 int, quelqu'un aurait-il une idée d'algorithme pour arriver à cela ?

    Exemple de prototype :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int GenerateUniqueKey( int a, int b, int c, int d) ;
    Merci

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Tel que c'est demandé, c'est impossible.

    Tes 4 paramètres sont composés de 4 int donc 128 bits (4 X 32 bits) et ta sortie (un int) fait 32 bits. Il n'est pas possible de générer une clé unique de 32 bits avec des données 128 bits, il y aura obligatoirement des collisions.

    Ceci dit, tes 4 paramètres sont peut être des int mais leur domaine de variation n'est peut être pas sur 32 bits. Il va donc d'abord falloir que tu décrives un peux mieux ces paramètres et toutes les range de valeurs qu'ils peuvent prendre.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Si c'est le cas de la conversion 4 char (4 * un octet) en 1 int (1 * octets) cela a déjà était demandé (et même très récemment) sur le forum. Veuillez faire une recherce .
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Tel que c'est demandé, c'est impossible.

    Tes 4 paramètres sont composés de 4 int donc 128 bits (4 X 32 bits) et ta sortie (un int) fait 32 bits. Il n'est pas possible de générer une clé unique de 32 bits avec des données 128 bits, il y aura obligatoirement des collisions.

    Ceci dit, tes 4 paramètres sont peut être des int mais leur domaine de variation n'est peut être pas sur 32 bits. Il va donc d'abord falloir que tu décrives un peux mieux ces paramètres et toutes les range de valeurs qu'ils peuvent prendre.
    Donc, les méthodes de compression lossless n'existent pas ?
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Donc, les méthodes de compression lossless n'existent pas ?
    Bien sûr que si. Mais tel que demandé et sans précision sur le domaine de variation des 4 paramètres, la compression la plus efficace est un nombre de 128 bits, c'est la concaténation des 4 paramètres.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Bien sûr que si. Mais tel que demandé et sans précision sur le domaine de variation des 4 paramètres, la compression la plus efficace est un nombre de 128 bits, c'est la concaténation des 4 paramètres.
    Voui Je suis taquin, c'est tout

    La question originale impliquerait effectivement de trouver une fonction bijective de S(128bits) vers S(32bits), qui n'existe effectivement pas - vu la cardinalité des deux ensembles. On peut le démontrer par l'absurde: si une telle fonction existait, elle pourrait être utilisée pour passer de S(32) à S(8), puis de S(8) à S(2), puis de S(2) à 0 ou 1 (=S1/2). Par extension, il existerait donc une fonction bijective S(2^2^n) => S(1/2). Etant bijective, la fonction inverse permet d'obtenir n'importe quelle valeur de S(2^2^n), quelque soit n, à partir de l'ensemble S(1/2) considéré. Hors S(1/2) est un ensemble discret composé d'un unique élément, et par définition, une fonction x => f(x) associé à x une unique valeur. Donc si cette fonction existe, alors S(2^2^n), qui contient 2^2^2^n éléments, contient 1 seul élément. Les deux propositions étant en conflit, la fonction ne peut exister.

    Est-ce que j'ai été clair ?

    Ceci dit, il y a des algorithmes de hachage qui sont relativement performant et minimisent les risques de collision (cf. http://www.partow.net/programming/hashfunctions/). Ensuite, il y aussi des algos de compression (à base de dictionnaires, comme Huffman) qui peuvent permettre d'obtenir l'effet désiré si le domaine de variation des 4 paramètres n'est pas trop important. Si certaines propriétés sont respectées (par exemple, on a très souvent beaucoup de 0 ou de 1 à la suite), d'autres méthodes de compression peuvent être utilisées.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par zeldomar Voir le message
    J'aimerai construire une clé entière (int,long...) unique à partir de 4 int
    Citation Envoyé par Emmanuel Deloget Voir le message
    Ceci dit, il y a des algorithmes de hachage qui sont relativement performant et minimisent les risques de collision.
    Au risque d'être "taquin", une collision (même si c'est un risque) implique une non-unicité de la clé.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Donc, les méthodes de compression lossless n'existent pas ?
    La compression lossless à taux fixe (ici, 1/4) n'existe pas.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    La compression lossless à taux fixe (ici, 1/4) n'existe pas.
    Voui, ça, je sais; je viens même de le prouver

    Je réagissait à ce que je croyais avoir lu, à savoir quelque chose dans le style "pour stocker 4 entiers de 32 bits, il te faut nécessairement 128 bits". Mais je m'ai trompé d'oeil ou de cerveau.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Générer référence unique basée sur la MAINTENANT() ?
    Par Mister Paul dans le forum Excel
    Réponses: 15
    Dernier message: 15/12/2010, 09h58
  2. [Système] générer numéro unique
    Par cd090580 dans le forum Langage
    Réponses: 4
    Dernier message: 17/06/2007, 17h51
  3. [Système] Générer un nom d'image unique
    Par ToxiZz dans le forum Langage
    Réponses: 14
    Dernier message: 22/12/2006, 15h56
  4. Générer un id unique
    Par ujoodha dans le forum Linux
    Réponses: 2
    Dernier message: 07/12/2006, 11h32
  5. Réponses: 12
    Dernier message: 10/06/2006, 23h16

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