Calculé d'une clé pour un numero de dossier : quelle méthode ?

evenkil Messages postés 35 Date d'inscription lundi 13 février 2006 Statut Membre Dernière intervention 15 avril 2014 - 7 janv. 2008 à 17:28
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 9 janv. 2008 à 00:04
Bonjour à tous

Je dispose de numeros de dossiers, allant de 0 à 999999999 et j'aimerai pouvoir calculer une clé (de 1 entier) pour chaque numero de dossier.
Exemple : pour dossier numero 6739, j'aimerai avoir un algo qui me permetterait de toujours obtenir la même clé qui serait imaginons 7. Ce qui au final me donnerai un numero de dossier : 6739-7
De même pour un dossier 6740, l'algo me donnerait la clé 2, ce qui me donnerai un numero de dossier 6740-2

A votre avis, quel algo type d'algo dois je utiliser pour le calcule de ma clé ?
Je me suis renseigné du coté du hachage, avec la fonction hash() mais il semble qu'on ne puis obtenir qu'une clé de 16 octet.
A la limite je n'ai qu'a prendre le 1er octet, mais le temps de calcule serveur de la fonction hash et bien élevé pour l'utilité ...
Avez vous une meilleur idée ?

Merci à tous pour votre aide.

Cordialement

13 réponses

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
7 janv. 2008 à 19:22
Salut,

Tu veux 10 milliards de clés (n° de dossier de 0 à 999999999 et une clé unique je présume par dossier).
Si tu ne veux pas utiliser une fonction de hashage (et pourquoi pas? avec md5(numero du dossier) tu auras toujours le même résultat), il faut que tu trouves une fonctions bijective (si ma mémoire est bonne) pour pouvoir avoir une clé unique.

*****
noisy communication - wherever, be everywhere!
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
8 janv. 2008 à 00:04
perso je ne comprends pas pourquoi tu veux avoir une clée pour chaques dossier sachant que (si j'ai bien compris) tes dossiers etant des numéros, ils ont forcément leur clée d'attribué ? (leur nom étant leur clef) ?

Tu peux m'éclairer ?
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
8 janv. 2008 à 03:39
salut
il n'y a aucune fonction bijective de l'ensemble [[0 ; 1000 000 000 ]] vers l'ensemble [[0, 10]]

les deux ensembles n'ayant pas le meme nombre d'elements, c'est impossible tout simplement

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
8 janv. 2008 à 09:15
c'est bien ce qu'il me semblait :p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 2
8 janv. 2008 à 11:52
    euuh ...ben trouve un truc sur le fonctionnement de la clé rib ....
j'ai vu un script pour verrifier les num des billets de banque passer
tu peux p'tet t'en inspirer
@+
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
8 janv. 2008 à 11:56
L'histoire des clefs Rib, comme les numéro de sécurité sociale (le dernier chiffre), c'est un modulo sur les valeurs d'avant, pour vérifier que le numéro entré est bien le bon.

Tu peux tester avec des modulos, bien que si tu a des dossier avec numéro, rajouter un autre numéro ne me semble pas utile mais bon :)
0
evenkil Messages postés 35 Date d'inscription lundi 13 février 2006 Statut Membre Dernière intervention 15 avril 2014
8 janv. 2008 à 15:19
Merci pour vos reponses.
Le but de la cle est d eviter les erreurs lors de saisies de numero de dossier.
Exemple, si on tape le numero 5875 alors qu on voulait taper le 5872, il y a un risque que l utilisateur ne voit pas son erreur.
D ou l idee de creer une cle qui permet d eviter les risque d erreur, en effet il y a peu de chance que 5875 et 5872 aient la meme cle.

Pour les rib j ai regarde avant de poster ce message et je suis malheuresement tombe sur des algo fesant intervenir des modulos.
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
8 janv. 2008 à 17:57
malheureusement ? je pense que ce serait la seule solution viable bien que je persiste à croire que le numéro de dossier en lui même n'a pas besoin de clé, je m'explique :

Ton utilisateur entre le numéro de dossier : pourquoi ? pour en créer un ou pour le consulter ?

Pour le créer, tu fait un champ avec auto increment et tu t'occupe pas de l'id du document.

Pour le consulter tu lui donne acces en liens avec un titre et pas un numéro.
S'il se plante, tu lui donne soi une erreur (t'a pas le droit!), soit le dossier s'il peux le consulter, il se rendra compte tout seul qu'il s'est planté.

Sauf si c'est plus particulier, auquel cas j'aurai besoin de plus d'explication pour tenter de t'aider
0
JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
8 janv. 2008 à 23:45
J'avais entendu parler il y'a un certain temps d'un truc tout con... tu utilise comme clé la somme de tous les chiffres, tu refais la somme de tous ces chiffres si t'as un truc <9 etc. T0arrives à 1 seul chiffre et voila ça permet de parer une partie des erreurs de saisie
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
8 janv. 2008 à 23:50
hem...
10 => 1+0 = 1
100 => 1+0+0 = 1
1000 => 1+0+0+0 = 1

etc...

*****
noisy communication - wherever, be everywhere!
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
8 janv. 2008 à 23:54
ca n'a rien d'injectif, comme toutes les fonctions de hash...
t'as 10 valeurs possibles pour 1000 000 d'antecedants.... t'auras plein d'antecedants par valeurs, c'est pas possible autement...

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
9 janv. 2008 à 00:01
Le but etait pas d'avoir quelque chose d'injectif (ou alors j'ai rien compris), juste un truc qui permette de verifier si une saisie est plausible il me semble... donc si t'arrives a faire une faute de frappe qui donne le même hash à la con, bah chapeau (j parle de faute de frappe, pas de qqch de voulu!!!)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
9 janv. 2008 à 00:04
10 => 1+0 = 1
100 => 1+0+0 = 1
1000 => 1+0+0+0 = 1

quand je vois ca, je pense injectivite, mais bon apres, on pense tous differement....

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
Rejoignez-nous