Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2788 connectés 

 


Dernière réponse
Sujet : [PHP] Cryptage
sisicaivrai

ethernal a écrit a écrit :

utilise md5($password)
tu le stockes dans ta bd en crypté et tu le cryptes qd tu le reçois lors d'un post avant de le comparer
(il y a pas de fct inverse)  
 




 :hello:  
ou crypt(),(c ske je fais) c du DES (pas ce qu'il y a de mieux, mais bon, c suffisant pour mon piti forum :D ...)
 
Encrypte une chaîne avec un DES
 
string crypt (string str, string salt )  
[PHP 3, PHP 4]  
 
crypt() va coder une chaîne en utilisant la méthode d'encryption du DES standard. Les arguments sont : la chaîne à encrypter, et un grain de sel qui servira de base pour l'encryption. Reportez vous au manuel Unix pour plus de détails.  
Si le grain de sel n'est pas fourni, il sera automatiquement généré par PHP.  
Certains systèmes d'exploitation acceptent plus d'un type d'encryption. En fait, le DES standard est parfois remplacé par une encryption MD5. Le type d'encryption est alors choisi en fonction du grain de sel. A l'installation, PHP détermine les possibilités de cryptage et décidera d'accepter d'autres grains de sel pour d'autres types d'encryption. Si le grain de sel n'est pas fourni, PHP générera alors un grain de 2 caractères, pour le DES standard, à moins que le système ne dispose de MD5 : dans ce cas, PHP générera un grain de sel pour MD, par défaut. PHP affecte la variable d'environnement CRYPT_SALT_LENGTH, à 2 si il utilise le DES standard, et à 12 si il utilise le MD5.  
Si vous utilisez le grain de sel fourni, retenez bien que ce grain de sel est généré une seule fois. Si vous appelez crypt() récursivement, cela aura un impact sur l'apparance et finalement la sécurité de votre cryptage.  
L'encryption standard fournit le grain de sel dans les deux premiers octets du résultat de la fonction crypt().  
Sur les systèmes qui supportent plusieurs méthodes d'encryption, les variables d'environnement suivantes sont mises à 0 ou à 1, en fonction de la disponibilité de la méthode :  
CRYPT_STD_DES - DES Standard avec 2-octets de SALT  
CRYPT_EXT_DES - DES étendu avec 9-octets SALT  
CRYPT_MD5 - MD5 avec 12-octets SALT commencant à $1$  
CRYPT_BLOWFISH - DES étendu avec 16-octets SALT commencant à $2$  
Il n'y a pas d'algorithme de décryptage, étant donné que crypt() est injective.  
 
 
pour celui qui dit que le password crypté, il suffit de tous les essayer en les cryptant et de comparer (méthode exaustive->pas décryptable)
de plus tant qu'a faire alors tu te fais pas chier et tu te tapes une recherche exhaustive directement sur le password, pas sur le crypté, là ou il le demande :sarcastic:

 

[edtdd]--Message édité par sisicaivrai--[/edtdd]


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
sisicaivrai

ethernal a écrit a écrit :

utilise md5($password)
tu le stockes dans ta bd en crypté et tu le cryptes qd tu le reçois lors d'un post avant de le comparer
(il y a pas de fct inverse)  
 




 :hello:  
ou crypt(),(c ske je fais) c du DES (pas ce qu'il y a de mieux, mais bon, c suffisant pour mon piti forum :D ...)
 
Encrypte une chaîne avec un DES
 
string crypt (string str, string salt )  
[PHP 3, PHP 4]  
 
crypt() va coder une chaîne en utilisant la méthode d'encryption du DES standard. Les arguments sont : la chaîne à encrypter, et un grain de sel qui servira de base pour l'encryption. Reportez vous au manuel Unix pour plus de détails.  
Si le grain de sel n'est pas fourni, il sera automatiquement généré par PHP.  
Certains systèmes d'exploitation acceptent plus d'un type d'encryption. En fait, le DES standard est parfois remplacé par une encryption MD5. Le type d'encryption est alors choisi en fonction du grain de sel. A l'installation, PHP détermine les possibilités de cryptage et décidera d'accepter d'autres grains de sel pour d'autres types d'encryption. Si le grain de sel n'est pas fourni, PHP générera alors un grain de 2 caractères, pour le DES standard, à moins que le système ne dispose de MD5 : dans ce cas, PHP générera un grain de sel pour MD, par défaut. PHP affecte la variable d'environnement CRYPT_SALT_LENGTH, à 2 si il utilise le DES standard, et à 12 si il utilise le MD5.  
Si vous utilisez le grain de sel fourni, retenez bien que ce grain de sel est généré une seule fois. Si vous appelez crypt() récursivement, cela aura un impact sur l'apparance et finalement la sécurité de votre cryptage.  
L'encryption standard fournit le grain de sel dans les deux premiers octets du résultat de la fonction crypt().  
Sur les systèmes qui supportent plusieurs méthodes d'encryption, les variables d'environnement suivantes sont mises à 0 ou à 1, en fonction de la disponibilité de la méthode :  
CRYPT_STD_DES - DES Standard avec 2-octets de SALT  
CRYPT_EXT_DES - DES étendu avec 9-octets SALT  
CRYPT_MD5 - MD5 avec 12-octets SALT commencant à $1$  
CRYPT_BLOWFISH - DES étendu avec 16-octets SALT commencant à $2$  
Il n'y a pas d'algorithme de décryptage, étant donné que crypt() est injective.  
 
 
pour celui qui dit que le password crypté, il suffit de tous les essayer en les cryptant et de comparer (méthode exaustive->pas décryptable)
de plus tant qu'a faire alors tu te fais pas chier et tu te tapes une recherche exhaustive directement sur le password, pas sur le crypté, là ou il le demande :sarcastic:

 

[edtdd]--Message édité par sisicaivrai--[/edtdd]

gizmo

kyle a écrit a écrit :

Youppiiii ! :)
 
J'ai résolu le probleme !
 
Cela venait de ma table membre, j'avais mis un varchar(30), et c'est trops court pour un pass crypté !
Il manquais en fais 2 chiffres a la fin !
 
Donc, j'ai mis un varchar(50) et ca fonctionne nikel ! :)
 
Soulagé ! :D
 
Merci a tous !  




 
tu sors :D

speedyop moi j'utilise que des int et des text au debut puis apres je reduit (je sais que c'est pas bot de retoucher apres la conception mais klk'1 peut me dire pkoa?)
Kyle Youppiiii ! :)
 
J'ai résolu le probleme !
 
Cela venait de ma table membre, j'avais mis un varchar(30), et c'est trops court pour un pass crypté !
Il manquais en fais 2 chiffres a la fin !
 
Donc, j'ai mis un varchar(50) et ca fonctionne nikel ! :)
 
Soulagé ! :D
 
Merci a tous !
Kyle En tout cas, md5() fonctionne bien !
Le probleme se situe lorsque il faut comparer le mot de passe rentrer (lors de l'identification) et celui présent dans la base de donnée.
Kyle Bien sur que j'ai tester sur mon site, je ne fais que ca !
speedyop hein koi arreter de deconner le md5() s'arrete pas de functionner du jour au lendemain comprends rien... t'as tester sur ton site kyle?
omega2 Personellement, pour mon chat, j'utilise password($motdepasse) pour envoyer les donées à la base de donéee et ca marche très bien. :)
Voilà le ligne exacte que j'utilise pour générer la requête sql :
 
return "SELECT userid FROM ".$service."user WHERE pseudo=\"".$pseudo."\" AND code=password(\"".$code."\" )";
 
 
Elle est dans une fonction qui retourne la requête effectué. Comme ça je pourais la réutiliser ailleur si j'ai besoin (plusiseurs extension du site sont prévus à plus ou moins long therme)
Kyle Je viens de tester et idem, ca ne fonctionne pas...
Trops bizzare.
speedyop mmm tu peut faire un insert directement en sql tu sait essaye de creer u ncompte a la main
 
insert into user (pseudo,password) values ('test',md5('test'))
Kyle Dans phpmyadmin, le pass est bien crypté !
 
J'utilise : $pass = md5($pass);
 
puis je fais un "insert into", comme dab...
speedyop c koi ton script d'insertion du compte? t'es sur que tu crypte?
Kyle J'y comprends rien, marche po non plus :(
 
Sans le cryptage, mon espace membre fonctionne a merveille...
Mais des que j'y ajoute du md5, ca foire...
gizmo

speedyop a écrit a écrit :

?
bah si tu compte le nombre de reponse avec mysql_num_rows?  




 
juste, j'avais loupé cette ligne.
 
Kyle>> ca doit marcher, excepté le cryptage, c'est ce que j'utilise pour mon forum et ca marche chez moi.

speedyop ?
bah si tu compte le nombre de reponse avec mysql_num_rows?
Kyle

gizmo a écrit a écrit :

On va faire plus simple:
 
original:
 

Code :
  1. if(isset($submit)){
  2. $cryptedPwd= md5($pass);
  3. $req = mysql_query("select * from $table_membre where surnom = '$surnom' and pass = '$cryptedPwd'" );
  4. $result = mysql_fetch_array($req);
  5. if($surnom != $result[surnom] || $cryptedPwd != $result[pass]) {
  6. $non = "Vous n'etes pas loggé !";
  7. } else {
  8. $email_session = $result[email];
  9. session_start();
  10. session_register("surnom" );
  11. session_register("email_session" );
  12. $oui = "Vous etes bien loggé !";
  13. }
  14. }


 
modifié:
original:
 

Code :
  1. $cryptedPwd= md5($pass);
  2. $req = mysql_query("select email from $table_membre where surnom = '$surnom' and pass = '$cryptedPwd'" );
  3. if(!mysql_num_rows($req))
  4. {
  5.   echo "Vous n'etes pas loggé !";
  6. }
  7. else
  8. {
  9.   session_start();
  10.   session_register("surnom" );
  11.   session_register("result[email]" );
  12.   echo "Vous etes bien loggé !";
  13. }

 




 
Désolé, marche pas :(
 
speedyop, je teste ton script !

gizmo

speedyop a écrit a écrit :

fait d'abord la selection du password correspondant a l'user
 
$query="select password from matable where pseudo='".$pseudo."'";
if ($result=mysql_query($query))
{
if (mysql_num_rows($result)>0)
 {
 $user=mysql_fetch_array($result);  
//la tu fait la comparaison
 if ($user[$password]==md5(password))  
  {
  //la c ok  
  }      
 else
  {
  //la le password est mauvais
  // tu peut meme mettre un compteur pour compter le nombre de tentative infructueuse  et bloquer le compte au bout de trop
  }
 }
else
 {
 echo "aucun compte a ce nom";
 }
}
else
{
echo "erreur technique";
}  




 
pas sur que ca te mettra pas des erreurs si le pseudo est inexistant.

speedyop fait d'abord la selection du password correspondant a l'user
 
$query="select password from matable where pseudo='".$pseudo."'";
if ($result=mysql_query($query))
{
if (mysql_num_rows($result)>0)
 {
 $user=mysql_fetch_array($result);  
//la tu fait la comparaison
 if ($user[$password]==md5(password))  
  {
  //la c ok  
  }      
 else
  {
  //la le password est mauvais
  // tu peut meme mettre un compteur pour compter le nombre de tentative infructueuse  et bloquer le compte au bout de trop
  }
 }
else
 {
 echo "aucun compte a ce nom";
 }
}
else
{
echo "erreur technique";
}

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)