Il est souvent utile en matière d’informatique, de disposer d’un code unique. Celui-ci permet d’identifier un objet à coup sûr parmi tous ses pairs.

Ce code unique, appelé GUID chez nos amis anglo-saxons pour « Globally Unique IDentifier », peut être créé de différentes façons selon l’objectif que l’on cherche à atteindre.

 

Un code pour quoi faire ?

Ce type de code peut avoir différents usages :

Si l’on veut éviter qu’il soit prédit comme un code de licence, un mot de passe, une URL ou le chiffrement d’un nom dont on est sûr que personne ne comprendra le sens, il faut un code complexe, suffisamment long et non séquentiel.

Ou bien tout au contraire, un code simple s’il est destiné à être mémorisé comme un numéro de matricule, un identifiant client ou un numéro de série.

 

Le code universellement unique

Pour que ce code soit totalement unique il doit être suffisamment long, mais la longueur de suffit pas. Si la méthode de génération fonctionne de façon cyclique ou prédictible, un code aussi long soit-il risque de créer ce que l’on appelle une collision : deux codes « uniques » avec la même valeur.

Autant dire que dans ce cas, le code perd toute valeur.

C’est notamment ce qui arrive quand on utilise les fonctions « random »  des ordinateurs qui sont tout sauf réellement aléatoires ou une méthode de type génération d’un MD5 ou d’un SHA.

Même si résultat semble illisible, le premier risque de revenir régulièrement et le second chiffrera toujours « martin » en 925d7518fc597af0e43f5606f9a51512, et donc au second « martin » votre code unique ne le sera plus.

Ces méthodes simplistes sont donc à proscrire utilisées telles quel.

 

Nos solutions

 

Le code généré et validé

La méthode la plus simple est de générer un code potentiellement unique par une des méthodes citées ci-dessus et surtout de le valider en le comparant aux codes précédemment générés. Bien sûr on rejettera les codes déjà utilisés jusqu’à en trouver un disponible. Cette méthode peut être un peu laborieuse si la génération est trop répétitive mais a le mérite d’éliminer les risques de collision.

 

La séquence

Il existe toutefois une solution, plus efficace, qui consiste à utiliser ce que l’on appelle une séquence. Il s’agit de produire une suite simple et prévisible, dans le cadre de laquelle on délivre un numéro unique. L’avantage est que ce numéro peut rester lisible si besoin ou bien salé et chiffré pour générer un code complexe.

Attention, il faut considérer que le numéro est définitivement utilisé dès qu’il est généré, qu’il soit exploité ou pas. On aura donc des numéros perdus…

 

Olivier Piochaud, PDG d‘Apsynet

 

Newsletter

Categories: Développement & Web