SYSTÊME SEMBLABLE AUX CLÉS CD .

Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009 - 23 oct. 2008 à 21:33
KarLTkT Messages postés 8 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 8 février 2010 - 5 févr. 2010 à 12:17
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48286-systeme-semblable-aux-cles-cd

KarLTkT Messages postés 8 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 8 février 2010
5 févr. 2010 à 12:17
Bonjour,

Je cherche le moyen de générer des clés d'activation en fonction de la date du jour, après validation d'un formulaire.
Concrètement, l'utilisateur installe un programme Visual Basic, qui lui demande une clé pour être activé. L'utilisateur rempli donc un formulaire html sur un page web, puis la validation du formulaire lui donne une clé après une opération simple sur la date du jour. L'utilisateur entre donc le code créé dans le programme qui connait également la même formule opérée pour la date, pour vérifier le code et activer son application.

La partie "application" est déjà faite et fonctionnelle, c'est plutot le moyen de générer des clés en fonction de la date que je ne connais pas. (je ne cherche pas à contrôler l'identification d'un utilisateur, comme je l'ai souvent trouvé dans le forum, mais uniquement à afficher un code en fonction de la date).

On peut donc imaginer un formulaire html, qui mène ensuite vers une page en php qui génère le code automatiquement. Je ne veux biensûr pas stocker les clés, puisqu'elles sont créés en fonction de la date.

J'espère que j'ai été assez clair,

Merci d'avance à qui voudra bien m'aider !
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
24 oct. 2008 à 20:21
Bah en fait les deux sont possible tout dépend de l'algo... tu peux travailler avec juste une clé publique et là ta fonction de vérif est privée ou alors travailler avec une clé privée et une clé publique et ta fonction de vérif tu t'en fout c'est la clé privée qui est importante... c'est le principe des clés RSA... .. .

@ tchaOo°
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
24 oct. 2008 à 19:35
bien sur que si... c'est la fonction de generation qui doit-etre cachee...

mais la, tu ne peux pas ecrire de fonction de verification vu ton algo, car comme le dit si bien kankrelune :

De toute façon en l'état c'est invérifiable n'importe quelle chaine de la bonne longueur correspondra.
phpmandu Messages postés 2 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 24 octobre 2008
24 oct. 2008 à 19:19
Le problême , c'est que si la fonction de vérification deviens publique , elle n'aura plus aucune utilitée ...
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
24 oct. 2008 à 19:13
De toute façon en l'état c'est invérifiable n'importe quelle chaine de la bonne longueur correspondra la seule vérification que tu peux faire c'est en la stockant dans une bdd et en la comparant j'appellerais pas ça un générateur de clée mais plutot un générateur de mot de pass c'est un peu plus compliqué que ça un générateur de clée et dans ce cas pas besoin de boucle... .. .

function section_cle($chrs = 10) { return substr(md5(uniqid(rand(), true)), 0, $chrs); }

sauf si tu as besoin d'un pass de plus de 32 caractères... .. .

sinon sur le présent code...

function section_cle($chrs = "")

pas beau ça $chrs est censé être un entier non ? donc...

function section_cle($chrs = 10)

fait attention au typage un chiffre entier ça n'est pas la même chose qu'une chaine de caractère... .. . ;o)

while( strlen( $newstring )< $chrs ) {

$string .= $list[mt_rand(0, strlen($list)-1)];

}

alors déja en l'état je pense que le code ne fonctionne pas pour la simple et bonne raison que $newstring n'existe pas... en imaginant qu'il sagit de $string ici à chaque itération de ta boucle tu utilise strlen()... ce n'est pas utile car tu sais quelle longueur elle avait au début et tu peux donc facilement savoir quelle longueur elle fait... et surtout c'est couteux en perf si ton pass devait faire 200 caractères tu appellerais 200 fois strlen pour pas grand chose... pareil pour le strlen() qui est dans la boucle...

$string = '';
$passLen = 0;
$listLen = strlen($list)-1;

while($passLen++ < $chrs )
$string .= $list[mt_rand(0,$listLen)];

tu peux même faire...

$string = '';
$passLen = -1;
$listLen = strlen($list)-1;

while(++$passLen < $chrs )
$string .= $list[mt_rand(0,$listLen)];

si tu veux grapiller... .. .

Voili voilou... le code n'est pas tip top mais c'est en forgeant qu'on devient forgeron... .. .

@ tchaOo°
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
24 oct. 2008 à 10:19
En l'état actuel, ta source n'apporte pas de nouveautés par rapport à celles déjà existantes.

Je comprends ta motivation à vouloir proposer tes découvertes aux autres membres, mais ton code existe déjà sous de nombreuses formes sur ce site.

Ce que je te propose, c'est d'améliorer ton code, proposer une fonction de vérification de la clée générée par exemple, peut-être sous des classes si tu veux t'y lancer, etc.

Si tu ne propose pas de modifications, je serai contraint de supprimer ta source.

Je n'ai rien contre toi hein :) c'est juste que trouver 50 fois le même code peux poser problème à un nouveau qui chercherai comment faire :)

Bon courage :)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
24 oct. 2008 à 09:32
et euh... t'as aucune fonction de "verification" ?
Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009
23 oct. 2008 à 21:33
Ou sinon :
<?php
$listeChar = '23456789abcdefghkpqrstwxyzABCDEFGHKJLMNPQRSTUVWXYZ';
$max = strlen($listeChar)-1;
$key = '';
for ($i=0;$i<$size;$i++) {
$key .= $listeChar[mt_rand(0,$max)];
}
?>

Mais personnellement je ne vois pas l'intérêt d'une telle source, désolé :x
Rejoignez-nous