En cours de VBA Excel, il nous a été demandé de faire un générateur de mot de passe. Le prof voyant qu'une bonne partie de la classe étaient perdu donne des indications (utiliser la fonction
rnd() &
chr()). De mon côté j'étais trop occupé à programmer pour m'apercevoir de ce qui se passait.
Ma méthode consistait à faire une chaine contenant l'ensemble des
[0-9],
[a-z],
[A-Z] caractères et les symboles "
!,;:?.". Car je savais que cette méthode avait fait ces preuves.
Le prof passe, et annonce que mon code est une "
usine à gaz", je rétorque qu'il a tort, car la totalité des scripts que j'ai pus voir jusqu'à présent sur l'ensemble des langages utilisait cette même méthode. Il me demande alors mes sources, et sous le stress je réponds "vb france" (
oui grosse boulette je sais ^^).
Enfin bon, je suis parti sur une autre méthode de génération de mot de passe aléatoire, avant d'arriver sur la méthode suivante :
For i = 1 To 8 Do 'On cherche aléatoirement un caractère sur une plage ASCII assez grande pour contenir tous les symboles Loop Until ((SI le caractère correspond à ce qu'on souhaite on passe au caractère suivant (SINON on recommence la boucle)) Next
Le gros problème que je trouve à cette méthode, est qu'on est pas sûr de tomber 8 fois de suite sur le bon caractère. On fait donc plus de 8 fois appel à la fonction rnd() ce qui ralentit le script.
D'où la suprématie incontestable de la méthode que je soutenait.
J'ai fait une petite recherche google, et voici les quelques premiers résultats (tous utilise cette méthode, beaucoup plus rapide) :
Sur PHPBuilder
Sur Delphifr (ligne 92)
Sur Atoutfox
Je déteste les injustices, et surtout qu'on me dise que j'ai tort lorsque j'ai raison, et avouer que j'ai tort sous un argument d'autorité et non un argument qui tient la route.
Ce post était pour ma conscience personnel, je me sens mieux maintenant.