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 :

[Sécurité] Cryptage et grain de sel


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Points : 60
    Points
    60
    Par défaut [Sécurité] Cryptage et grain de sel
    Bonjour,

    J'ai bien lu tous les sujets sur le cryptage des mots de passes, je comprends bien le principe du grain de sel mais j'ai du mal à le mettre en place et je n'ai pas trouvé d'exemple concret.

    Mes mots de passe sont actuellement cryptés avec MD5 et j'aimerais donc rajouter un petit grain de sel dans tout ça.

    Est ce que quelqu'un peut me donner une petite idée d'algorithme pour mettre ça en place ?

    Merci pour votre aide

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    As-tu lu ceci ?
    K

  3. #3
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Hello,

    la méthode la plus simple et la plus portable est clairement l'utilisation de la fonction crypt() de PHP.
    C'est également un standard UNIX, elle est utilisée pour les mots de passe des utilisateurs sous Linux, pour les mots de passe des boites mails virtuelles sous Courier, et est également fournie dans bon nombre de langages, y compris MySQL. Bref, pour moi c'est de loin la meilleure solution.

    La doc : http://fr.php.net/manual/fr/function.crypt.php


    Un exemple (tiré de la doc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     <?php
    // laissons le salt initialisé par PHP
    $mot_de_passe = crypt("monmotdepasse");
     
    /*
      Il vaut mieux passer le résultat complet de crypt() comme salt nécessaire
      pour le chiffrement du mot de passe, pour éviter les problèmes entre les
      algorithmes utilisés (comme nous le disons ci-dessus, le chiffrement
      standard DES utilise un salt de 2 caractères, mais un chiffrement
      MD5 utilise un salt de 12).
    */
    if (crypt($utilisateur_input,$mot_de_passe_input) == $mot_de_passe) {
       echo "Mot de passe correct!";
    }
    ?>
    Google is watching you !

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Points : 60
    Points
    60
    Par défaut
    Ok donc j'ai mon formulaire d'authentification avec un champ login et un champ mot de passe.

    Je transmets tout ça au script d'identification mais là je capte pas :

    Comment est crypté le pass dans la base ? et ensuite comment je compare le mot de passe de la base et celui envoyé par l'utilisateur ?

  5. #5
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Salut,

    Il faut bien comprendre deux choses différentes; Le cryptage, et le hashage.

    Le cryptage sers à stocker une donnée, afin de pouvoir la récupérer. Donc la totalité de la donnée est cryptée. Les algorithmes de cryptage cryptent en général avec un mot clé, afin de permettre à l'autre bout de décrypter le message, si la personne connait le mot clé.

    Le hashage est un autre principe, bien que proche. On ne stocke pas la donnée crypté, mais seulement le "hash" correspondant à cette donnée. Les algorithme de hashage sont en général suffisamment bons pour répondre à la règle suivant : "Pour deux données, même différentes d'un seul bit, un hash unique sera fourni, et possiblement ce hash sera totalement différent même si un seul bit a changé".

    En général, ce qu'on stocke dans une base de donnée par rapport aux mots de passe sont les hash. Car même si un "hacker" parvient à trouver le moyen qui a été utilisé pour créer ce hash, il n'obtiendra pas les mots de passe pour autant, il obtiendra uniquement le MOYEN de générer le hash pour un mot de passe donné.

    En clair, dans ton application, quand la personne s'inscrit, tu génères le hash MD5 ( avec grain de sel ou non ) de son mot de passe. tu stockes ce hash.

    La prochaine fois que la personne entrera son mot de passe, tu génèreras le hash correspondant à cette identification, et si le hash est le même que celui dans la base, tu as gagné, l'utilisateur est le même

    Le cryptage sert UNIQUEMENT dans le cas où on veut conserver la donnée, pour pouvoir la restituer plus tard

    A+
    K

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Points : 60
    Points
    60
    Par défaut
    C'est parfait merci bcp pour votre aide

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 137
    Points : 92
    Points
    92
    Par défaut
    merci ça m'a beaucoup aidé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] MD5 et grain de sel
    Par stringman62 dans le forum Langage
    Réponses: 7
    Dernier message: 06/04/2007, 11h59
  2. [Sécurité] Cryptage simple d'entier
    Par Florent08800 dans le forum Langage
    Réponses: 19
    Dernier message: 13/07/2006, 16h26
  3. [Sécurité] Cryptage MD5 et sécurité ?
    Par renaudjuif dans le forum Langage
    Réponses: 11
    Dernier message: 01/05/2006, 02h52
  4. [Sécurité] Cryptage des mots de passe
    Par franfr57 dans le forum Langage
    Réponses: 9
    Dernier message: 25/04/2006, 15h04

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