Probleme decryptage mot de passe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme decryptage mot de passe

par Truc » 03 janv. 2008, 01:33

Modération :
Foulensois, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

par Aureusms » 02 janv. 2008, 23:59

Au fait le MD5 n'est PAS un mode de cryptage c'est du HASHAGE. En clair après md5($valeur); tu ne peux pas revenir en arrière.

par Aureusms » 02 janv. 2008, 23:56

Oui et non j'ai repris une portion de ton code pour que cela marche mais selon ton code
$passe1_decrypte = mcrypt_decrypt($algo, $cle, $passe1_crypte, $mode, $iv); 
le processus à besoin de toute les variables et surtout $algo, $cle, $mode, $iv. Si tu veux tu peux mettre le tout dans une fonction de décryptage/cryptage ca t'éviteras de créer tes lignes de codes inutiles :

function decryptage_encryptage ($valeur,$mode) {

$algo = "blowfish"; // ou la constante php MCRYPT_BLOWFISH
$mode = "nofb"; // ou la constante php MCRYPT_MODE_NOFB
$key_size = mcrypt_module_get_algo_key_size($algo);
$iv_size = mcrypt_get_iv_size($algo, $mode);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

$cle = "mon cryptage";
$cle = substr($cle, 0, $key_size);

if ($mode == "encrypter") $valeur_return = mcrypt_encrypt($algo, $cle, $valeur, $mode, $iv);
else                             $valeur_return = mcrypt_decrypt($algo, $cle, $valeur, $mode, $iv);

return $valeur_return ;
}

//pour appeler la fonction 
$mot_a_crypter = "essai";

$valeur_retournee = decryptage_encryptage ($mot_a_crypter, "encrypter");
echo $valeur_cryptee.'<BR/>';
$valeur_decryptee = decryptage_encryptage ($valeur_cryptee, "désencrypter");
echo $valeur_decryptee .'<BR/>'; //affichage du mot essai

par Foulensois » 02 janv. 2008, 23:44

Merci beaucoup Aureusms, ca marche desormais. Dire que certains me forcaient a regenerer un mot de passe et de repasser un coup de MD5 :)

La variable, meme si celle est declaree plus haut doit elle toujours etre rappelee avant son execution ?

par Aureusms » 02 janv. 2008, 23:34

Essaye cela :
<?
// Recuperation du codage de l email et du passe1
$algo = "blowfish"; // ou la constante php MCRYPT_BLOWFISH
$mode = "nofb"; // ou la constante php MCRYPT_MODE_NOFB
// calcul des longueurs max de la clé et de l'IV
$key_size = mcrypt_module_get_algo_key_size($algo);
$iv_size = mcrypt_get_iv_size($algo, $mode);
// création d'un IV aléatoire de la bonne longueur
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
// choix d'une clé secrète de cryptage/décryptage et mise à longueur
$cle = "mon cryptage";
$cle = substr($cle, 0, $key_size); 


$req = mysql_query("SELECT Pseudo, Passe1 FROM membres WHERE Email='$email_crypte'");          
$resultat = mysql_num_rows($req);
if ($resultat < 1)
$message .= "Vous avez specifie une adresse Email inexistante<br/>";  
mysql_close(); 

// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {

  include ('./erreur_passe_oublie.html');

// sinon c'est ok

} else {
require('./jpk62300/dbconnect.inc');
  foreach($_POST as $index => $valeur) {
    $$index = mysql_real_escape_string(trim($valeur));
  }

list($Pseudo, $passe1_crypte) = mysql_fetch_row($req);
$passe1_decrypte = mcrypt_decrypt($algo, $cle, $passe1_crypte, $mode, $iv);
@mail($email_decrypte, "Identifiants de $Pseudo ", "Cher $Pseudo,\nVous trouverez ci joint les informations concernant votre identification :\n
\nPseudo: $Pseudo
\nPasse : $passe1_decrypte
", "From: [email protected]");

par Foulensois » 02 janv. 2008, 23:29

En fait, j appelle juste la variable qui a ete defini plus haut dans le script, c est a dire $passe1_decrypte et $email_decrypte.
Je pensais que cela suffisait pour que le decryptage soit fait.

Il faudrait donc que je reecrive une portion du code entre ces 2 lignes meme si je l ai declare plus haut ?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par Aureusms » 02 janv. 2008, 23:17

Ce que je voulais dire c'est que entre
list($Pseudo, $passe1_decrypte) = mysql_fetch_row($req);
et
@mail($email_decrypte, "Identifiants de $Pseudo ", "Cher $Pseudo,\nVous trouverez ci joint les informations concernant votre identification :\n 
Je ne vois pas où tu décriptes... Comprends tu ?

par Foulensois » 02 janv. 2008, 23:11

Voila la partie cryptage qui est presque la meme que dans le tutoriel. Je pense que ca doit venir d une declaration de variable mal faite '$Passe1' mais comme je debute, c est pas evident a debugger
<?
// Recuperation du codage de l email et du passe1
$algo = "blowfish"; // ou la constante php MCRYPT_BLOWFISH
$mode = "nofb"; // ou la constante php MCRYPT_MODE_NOFB
// calcul des longueurs max de la clé et de l'IV
$key_size = mcrypt_module_get_algo_key_size($algo);
$iv_size = mcrypt_get_iv_size($algo, $mode);
// création d'un IV aléatoire de la bonne longueur
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
// choix d'une clé secrète de cryptage/décryptage et mise à longueur
$cle = "mon cryptage";
$cle = substr($cle, 0, $key_size);
// Phrase à crypter et cryptage
$email_encrypt = "$Email";
$email_crypte = mcrypt_encrypt($algo, $cle, $email_encrypt, $mode, $iv);
$passe1_encrypt = "$Passe1";
$passe1_crypte = mcrypt_encrypt($algo, $cle, $passe1_encrypt, $mode, $iv);
//Décryptage
$email_decrypte = mcrypt_decrypt($algo, $cle, $email_crypte, $mode, $iv);
$passe1_decrypte = mcrypt_decrypt($algo, $cle, $passe1_crypte, $mode, $iv);

?>

par Aureusms » 02 janv. 2008, 23:00

Je n'arrive pas à voir où tu décriptes ton MDP.

Probleme decryptage mot de passe

par Foulensois » 02 janv. 2008, 22:42

Bonsoir a tous,

Je debute en php et j ai recupere ici un tutoriel sur la cryptologie :)
Je suis en train de creer un espace membre ou les emails et mots de passe sont codes mcrypt.
http://www.phpfrance.com/tutoriaux/inde ... rypt-ripat

Lorsqu un utilisateur oublie ses identifiants, il a juste a saisir son email.
L email du formulaire est alors encode pour pouvoir verifier qu il existe dans la BDD recupere le pseudo et le mot de passe. Si l email utilisateur existe, alors le script envoie un mail avec les identifiants (login et pass).

Le probleme est que lorsque le mail est envoye, le pass est toujours crypte alors qu il est bien declare avec les variables comme devant etre decrypte selon la methode utilise sur le tutoriel :/

Voici la fin du code
<?
$req = mysql_query("SELECT Pseudo, Passe1 FROM membres WHERE Email='$email_crypte'");          
$resultat = mysql_num_rows($req);
if ($resultat < 1)
$message .= "Vous avez specifie une adresse Email inexistante<br/>";  
mysql_close(); 

// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {

  include ('./erreur_passe_oublie.html');

// sinon c'est ok

} else {
require('./foulensois/dbconnect.inc');
  foreach($_POST as $index => $valeur) {
    $$index = mysql_real_escape_string(trim($valeur));
  }

list($Pseudo, $passe1_decrypte) = mysql_fetch_row($req);
@mail($email_decrypte, "Identifiants de $Pseudo ", "Cher $Pseudo,\nVous trouverez ci joint les informations concernant votre identification :\n
\nPseudo: $Pseudo
\nPasse : $passe1_decrypte
", "From: [email protected]");
?> 
Si vous avez une idee pour que les utilisateurs recuperent par mail leur bon pass et non celui crypte