Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 26/05/2006, 14h00   #1
Gwipi
Nouveau Membre du Club
 
Inscription : juillet 2002
Messages : 99
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 99
Points : 28
Points : 28
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
Gwipi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2006, 14h05   #2
KiLVaiDeN
Expert Confirmé
 
Avatar de KiLVaiDeN
 
Inscription : octobre 2003
Messages : 2 723
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 723
Points : 2 700
Points : 2 700
As-tu lu ceci ?
__________________
K
KiLVaiDeN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2006, 14h13   #3
Kioob
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
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 !
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2006, 16h06   #4
Gwipi
Nouveau Membre du Club
 
Inscription : juillet 2002
Messages : 99
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 99
Points : 28
Points : 28
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 ?
Gwipi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2006, 16h14   #5
KiLVaiDeN
Expert Confirmé
 
Avatar de KiLVaiDeN
 
Inscription : octobre 2003
Messages : 2 723
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 723
Points : 2 700
Points : 2 700
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
KiLVaiDeN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2006, 16h24   #6
Gwipi
Nouveau Membre du Club
 
Inscription : juillet 2002
Messages : 99
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 99
Points : 28
Points : 28
C'est parfait merci bcp pour votre aide
Gwipi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2012, 16h13   #7
helkøwsky
Membre du Club
 
Inscription : avril 2009
Messages : 117
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 117
Points : 46
Points : 46
merci ça m'a beaucoup aidé
helkøwsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h22.


 
 
 
 
Partenaires

Hébergement Web