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

Langage PHP Discussion :

Renforcer le hasard d'un numéro aléatoire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Par défaut Renforcer le hasard d'un numéro aléatoire
    Bonjour,

    J'attribue un numéro de session aléatoire aux membres à l'instant où ils s'identifient.

    Pour ce faire je prend la moment de la connexion et je le crypte avec md5() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $numeroConnexion=time();
    $numeroConnexion=md5(uniqid (rand()));
    Cela étant, la probabilité que deux personnes s'identifient à la même seconde, si elle est faible, n'est tout de même pas inconcevable.

    Que me suggérez-vous pour rendre encore plus aléatoire ce numéro de connexion ?

    Merci pour vos réponses.

  2. #2
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    tu n'aimes pas les sessionID générées par PHP ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Par défaut
    C'est pour un système anti vol de session en fait et là je crée un numéro de connexion qui me permet d'identifier le membre au travers d'une session sans faire passer des informations personnelles tels que l'id (qui lui reste toujours le même).

    Ceci dit en effet pourquoi ne pas prendre l'id de session, mais je le récupère comment ? Je peux aussi le concaténer au time() et "md5iser" le tout.

    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $a=time();
    $b=md5(uniqid (rand()));
    $c=$a.$b;
    $d=md5($c);
    Cela ça doit être bon, mais n'ai-je pas commis une erreur de syntaxe dans la concaténation de $a et $b pour obtenir $c ?

  4. #4
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Citation Envoyé par psychoBob
    Ceci dit en effet pourquoi ne pas prendre l'id de session, mais je le récupère comment ?
    Ben...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Par défaut
    Ouh là non, je vais allez me coucher moi, en fait je pige même plus mon script...

    Lorsque les gens s'identifient je leur attribue un numéro de session comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $numeroConnexion=md5(uniqid (rand()));
    Je prend pas le time en md5(), j'utilise le time pour controler le temps d'inactivité, rien à voir...

    Hu hu désolé


    (ça doit être suffisant le md5(), il y a peu de chance que ça m'en sorte deux similaire un jour quand même)

  6. #6
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Citation Envoyé par psychoBob
    (ça doit être suffisant le md5(), il y a peu de chance que ça m'en sorte deux similaire un jour quand même)
    Si ça arrive, tu me prends un ticket de loto, hein...

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Par défaut
    Bon alors histoire de compliquer le problème et vu que l'on (je) ne connait pas la probabilité de sortir un md5() similaire pour deux membres, sachant qu'ils sont updatés à chaque nouvelle connexion...

    Et sachant que mon "idée" que je reprend et qui est basé sur le time() est pas forcément lamentable dans la mesure ou j'ai un oeil fermé et un pied dans le lit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $a=time();
    $b=md5(uniqid (rand()));
    $c=$a.$b;
    $d=md5($c);
    Je vous balance une question sauvage en guise de bonne nuit :

    - Si le membre 1 se connecte à time()
    - Si je crée à ce moment là un md5()
    - Si je concatène les deux et que je repasse tout ça par md5()
    J'obtiens un md5(), ok.

    -Maintenant le membre 2 se connecte à un time différent() (ou le même d'ailleur, si vraiment on a pas de bol).
    - On recrée un md5()
    - On le concatène à son time() et on le repasse par md5()

    Au final, peut-on se retrouver avec le md5() du membre 1, ou est-ce impossible puisque le time() de connexion de 2 et son md5() concaténés sont à priori différent ?
    Sans rentrer dans les délires probabiliste, la question est plutot l'opération de concaténation du md5() avec le time() PLUS le repassage du tout par md5() annule-t'il l'effet certain de l'unicité du time() dans la mesure ou on a quand même pas de pot si deux membres s'identifient à la même seconde ?

Discussions similaires

  1. Générer des numéros de téléphone aléatoire
    Par Rodrigue dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/10/2012, 00h07
  2. Réponses: 17
    Dernier message: 22/11/2008, 16h53
  3. Réponses: 1
    Dernier message: 30/06/2008, 16h40
  4. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 15h25
  5. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 03h35

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