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

Python Discussion :

Transposer deux lignes de Python en C ou Php


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut Transposer deux lignes de Python en C ou Php
    Bonjour,
    je suis en train de coder un petit programme en GTK + (C) pour installer OpenSim en mode graphique. Mais pour créer un utilisateur il faut crypter le mot de passe avant de le mettre dans la base de données.

    J'ai trouvé ce code qui le fait mais il est écrit en python et franchement je n'ai pas de notion dans le domaine mais si je comprends un petit peu j'ai du mal. Voici ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     osprofile.passwordSalt = '%016x' % random.getrandbits(128)
     osprofile.passwordHash = hashlib.md5('%s:%s' % (hashlib.md5(profile_data['password']).hexdigest(),osprofile.passwordSalt)).hexdigest()
    Alors si quelqu'un pouvait me traduire ces deux lignes en C ou en PHP ça serait sympa.
    Je ne vois pas comment est défini passwordSalt , quelle fonction de génération de nombre aléatoire utiliser et que vient faire '%016x' % devant la fonction.
    Ensuite pourquoi utiliser hexdigest() ?
    Et pourquoi '%s:%s' % ..?

    Merci pour votre aide

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Salut

    J'ai la flemme de te donner le code C, mais je peux t'expliquer ce que font ces lignes. Comme tu fais déjà du C, je présume que tu t'en sortiras pour la suite

    La première ligne crée un entier aléatoire de 128 bits, représenté en hexadécimal.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '%016x' % random.getrandbits(128)
    La deuxième, c'est un hash md5 représenté en hexadécimal.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hashlib.md5('%s:%s' % (hashlib.md5(profile_data['password']).hexdigest(),osprofile.passwordSalt)).hexdigest()
    Comme c'est un peu le dawa, on va la prendre morceau par morceau.

    Ça, c'est un md5 du mot de passe, en hexadécimal.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hashlib.md5(profile_data['password']).hexdigest()
    Pas de surprise ici, c'est le sel qu'on a généré juste au dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "%s:%s" % ($1, $2)
    # == équivalent d'un sprintf en C
    sprintf(buffer, "%s:%s", $1, $2)
    Et enfin, on refait un md5 de la chaine obtenue avec le sprintf, toujours en hexadécimal.

  3. #3
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Ok merci ! Je vais essayer avec tes infos et si je ne m'en sors pas je reviens.
    Je code en C mais bon je ne suis pas non plus superdouée

    Alors quand on me dit que le code python équivaut à ce code en php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $passwordHash = md5(md5($password) . ':' .$Salt);
    J'ai raison de ne pas le croire ... il y a ce fameux hexdigest() et on ne me dit pas comment trouver $Salt.

    Je me demandais aussi si la fonction de génération du nombre aléatoire était spéciale ou si je peux utiliser une méthode classique du C.

    Je teste... Merci encore.

  4. #4
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Si je ne m'abuse, la fonction md5 de PHP retourne bien un hash en hexadécimal. Ça doit donc correspondre.
    Pour le $salt, vous pouvez utiliser uniqid.

    Le random est tout à fait standard. Le seul détail, c'est qu'il renvoie un nombre de 128bits, soit 16 octets. C'est peut-être important, selon la méthode de stockage.

  5. #5
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    Je vais peute être poster la suite sur le forum de PHP je mettrai le lien ici.
    J'ai testé avec uniqid, je n'arrive pas à créer de mots de passe qui fonctionne pour ma base de données.
    Merci pour la réponse.

Discussions similaires

  1. Traduire deux lignes de Python
    Par acryline dans le forum Langage
    Réponses: 2
    Dernier message: 12/08/2010, 21h35
  2. Transposer deux lignes de Python en C
    Par acryline dans le forum Débuter
    Réponses: 1
    Dernier message: 12/08/2010, 14h13
  3. Réponses: 10
    Dernier message: 07/12/2006, 20h52
  4. [VB.NET] DataGrid : titre des colonnes sur deux lignes
    Par Lahouari dans le forum Windows Forms
    Réponses: 6
    Dernier message: 06/12/2004, 14h44
  5. Deux lignes sur un TButton
    Par bml dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/07/2003, 11h17

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