+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Nouveau Membre du Club
    Inscrit en
    juillet 2002
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 99
    Points : 30
    Points
    30

    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
    Expert Confirmé Avatar de KiLVaiDeN
    Inscrit en
    octobre 2003
    Messages
    2 725
    Détails du profil
    Informations forums :
    Inscription : octobre 2003
    Messages : 2 725
    Points : 3 042
    Points
    3 042

    Par défaut

    As-tu lu ceci ?
    K

  3. #3
    Membre chevronné
    Avatar de Kioob
    Profil pro Olivier Bonvalet
    Inscrit en
    septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Nom : Olivier Bonvalet
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : septembre 2004
    Messages : 550
    Points : 761
    Points
    761

    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 :
    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
    Nouveau Membre du Club
    Inscrit en
    juillet 2002
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 99
    Points : 30
    Points
    30

    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
    Expert Confirmé Avatar de KiLVaiDeN
    Inscrit en
    octobre 2003
    Messages
    2 725
    Détails du profil
    Informations forums :
    Inscription : octobre 2003
    Messages : 2 725
    Points : 3 042
    Points
    3 042

    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
    Nouveau Membre du Club
    Inscrit en
    juillet 2002
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 99
    Points : 30
    Points
    30

    Par défaut

    C'est parfait merci bcp pour votre aide

  7. #7
    Membre du Club
    Inscrit en
    avril 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : avril 2009
    Messages : 128
    Points : 60
    Points
    60

    Par défaut

    merci ça m'a beaucoup aidé

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •