2014-02-04 2 views
-2

Я пытаюсь сохранить мой пароль как md5. Я просто хочу сохранить этот пароль, используя это, потому что это то, что я хочу в своем приложении для входа. Теперь, как я могу получить имя пользователя и пароль для аутентификации при входе в систему. Я не знаю, как получить пароль, потому что этот md5 я знаю, что он не может быть расшифрован из-за его не шифрования. пожалуйста, помогите мне, как это сделать.Unsafe md5 Как получить имя пользователя и пароль для аутентификации с помощью md5

это мой код:

public function storeUser($username, $password, $fname, $lname, $gender, $address, $contact, $age, $birthday) { 
    // 
     $uuid = uniqid('', true); 
     //$hash = $this->hashSSHA($password); 
     //$encrypted_password = $hash["encrypted"]; // encrypted password 
     $password = isset($_REQUEST['password']) ? md5($_REQUEST['password']) : NULL; 
     $salt = $hash["salt"]; // salt 
     $result = mysql_query("INSERT INTO patient_user(unique_id, username, encrypted_password, fname, lname, gender, address,contact, age, birthday, salt, created_at) VALUES('$uuid', '$username', '$password', '$fname', '$lname', '$gender','$address','$contact','$age','$birthday','$salt', NOW())"); 
     $result1 = mysql_query("INSERT INTO users(Id, username, password, salt) VALUES('$uid', '$username', '$password', '$salt')"); 
     /*$sql = "insert into users(Id, username, password, salt) 
           values ('".$uid."','".$username."', '".$encrypted_password."', '".$salt."')"; 
     $result1 = $db->query($sql); 
     */ 
     // check for successful store 
     if ($result) { 
      // get user details 
      $uid = mysql_insert_id(); // last inserted id 
      $result = mysql_query("SELECT * FROM patient_user WHERE uid = $uid"); 
      // return user details 
      return mysql_fetch_array($result); 

     } else { 
      return false; 
     } 

    } 


    /** 
    * Get user by username and password 
    */ 
    function getUserByusernameAndPassword($username, $password) { 

     $result = mysql_query("SELECT * FROM patient_user WHERE username = '$username' and encrypted_password = '$password'") or die(mysql_error()); 
     //$result = mysql_query("SELECT * FROM users WHERE username = '$username'") or die(mysql_error()); 
/* 
     // check for result 
     $no_of_rows = mysql_num_rows($result); 
     if ($no_of_rows > 0) { 
      $result = mysql_fetch_array($result); 
      // $salt = $result['salt']; 
      $password = $result['encrypted_password']; 
      // $hash = $this->checkhashSSHA($salt, $password); 
      // check for password equality 
      if ($password == $hash) { 
       // user authentication details are correct 
       return $result; 
      } 
     } else { 
      // user not found 
      return false; 
     } 
     */ 
    } 

EDIT

Я использую md5 из-за этого ниже кода. Этот код не является моей оригинальной работой, скопированной с сайта и просто пытающейся внести некоторые изменения. Я действительно не могу обновить строку IP и порт в пользователях таблицы, потому что передаваемый пароль отличается.

<?php 
/**************************************** 
*  Server of Android IM Application 
* 
*  Author: ahmet oguz mermerkaya 
*  Email: [email protected] 
*  Editor: Dominik Pirngruber 
*  Email: [email protected] 
*  Date: Jun, 25, 2013  
* 
*  Supported actions: 
*   1. authenticateUser 
*    if user is authentiated return friend list 
*   
*   2. signUpUser 
*  
*   3. addNewFriend 
*  
*   4. responseOfFriendReqs 
* 
*   5. testWebAPI 
*************************************/ 


//TODO: show error off 

require_once("mysql.class.php"); 

$dbHost = "localhost"; 
$dbUsername = "root"; 
$dbPassword = ""; 
$dbName = "healthhelp"; 


$db = new MySQL($dbHost,$dbUsername,$dbPassword,$dbName); 

// if operation is failed by unknown reason 
define("FAILED", 0); 

define("SUCCESSFUL", 1); 
// when signing up, if username is already taken, return this error 
define("SIGN_UP_USERNAME_CRASHED", 2); 
// when add new friend request, if friend is not found, return this error 
define("ADD_NEW_USERNAME_NOT_FOUND", 2); 

// TIME_INTERVAL_FOR_USER_STATUS: if last authentication time of user is older 
// than NOW - TIME_INTERVAL_FOR_USER_STATUS, then user is considered offline 
define("TIME_INTERVAL_FOR_USER_STATUS", 60); 

define("USER_APPROVED", 1); 
define("USER_UNAPPROVED", 0); 


$username = (isset($_REQUEST['username']) && count($_REQUEST['username']) > 0) 
          ? $_REQUEST['username'] 
          : NULL; 
$password = isset($_REQUEST['password']) ? md5($_REQUEST['password']) : NULL; 
$port = isset($_REQUEST['port']) ? $_REQUEST['port'] : NULL; 

$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : NULL; 
if ($action == "testWebAPI") 
{ 
    if ($db->testconnection()){ 
    echo SUCCESSFUL; 
    exit; 
    }else{ 
    echo FAILED; 
    exit; 
    } 
} 

if ($username == NULL || $password == NULL) 
{ 
    echo FAILED; 
    exit; 
} 

$out = NULL; 

error_log($action."\r\n", 3, "error.log"); 
switch($action) 
{ 

    case "authenticateUser": 


     if ($userId = authenticateUser($db, $username, $password)) 
     {     

      // providerId and requestId is Id of a friend pair, 
      // providerId is the Id of making first friend request 
      // requestId is the Id of the friend approved the friend request made by providerId 

      // fetching friends, 
      // left join expression is a bit different, 
      //  it is required to fetch the friend, not the users itself 

      $sql = "select u.Id, u.username, (NOW()-u.authenticationTime) as authenticateTimeDifference, u.IP, 
             f.providerId, f.requestId, f.status, u.port 
          from friends f 
          left join users u on 
             u.Id = if (f.providerId = ".$userId.", f.requestId, f.providerId) 
          where (f.providerId = ".$userId." and f.status=".USER_APPROVED.") or 
             f.requestId = ".$userId." "; 

      //$sqlmessage = "SELECT * FROM `messages` WHERE `touid` = ".$userId." AND `read` = 0 LIMIT 0, 30 "; 

      $sqlmessage = "SELECT m.id, m.fromuid, m.touid, m.sentdt, m.read, m.readdt, m.messagetext, u.username from messages m \n" 
    . "left join users u on u.Id = m.fromuid WHERE `touid` = ".$userId." AND `read` = 0 LIMIT 0, 30 "; 


      if ($result = $db->query($sql))   
      { 
        $out .= "<data>"; 
        $out .= "<user userKey='".$userId."' />"; 
        while ($row = $db->fetchObject($result)) 
        { 
         $status = "offline"; 
         if (((int)$row->status) == USER_UNAPPROVED) 
         { 
          $status = "unApproved"; 
         } 
         else if (((int)$row->authenticateTimeDifference) < TIME_INTERVAL_FOR_USER_STATUS) 
         { 
          $status = "online"; 

         } 
         $out .= "<friend username = '".$row->username."' status='".$status."' IP='".$row->IP."' userKey = '".$row->Id."' port='".$row->port."'/>"; 

               // to increase security, we need to change userKey periodically and pay more attention 
               // receiving message and sending message 

        } 
         if ($resultmessage = $db->query($sqlmessage))   
          { 
          while ($rowmessage = $db->fetchObject($resultmessage)) 
           { 
           $out .= "<message from='".$rowmessage->username."' sendt='".$rowmessage->sentdt."' text='".$rowmessage->messagetext."' />"; 
           $sqlendmsg = "UPDATE `messages` SET `read` = 1, `readdt` = '".DATE("Y-m-d H:i")."' WHERE `messages`.`id` = ".$rowmessage->id.";"; 
           $db->query($sqlendmsg); 
           } 
          } 
        $out .= "</data>"; 
      } 
      else 
      { 
       $out = FAILED; 
      }   
     } 
     else 
     { 
       // exit application if not authenticated user 
       $out = FAILED; 
     } 



    break; 

    case "signUpUser": 
     if (isset($_REQUEST['email'])) 
     { 
      $email = $_REQUEST['email'];  

      $sql = "select Id from users 
          where username = '".$username."' limit 1"; 



      if ($result = $db->query($sql)) 
      { 
        if ($db->numRows($result) == 0) 
        { 
          $sql = "insert into users(username, password, email) 
           values ('".$username."', '".$password."', '".$email."') ";       

           error_log("$sql", 3 , "error_log"); 
          if ($db->query($sql)) 
          { 
            $out = SUCCESSFUL; 
          }    
          else { 
            $out = FAILED; 
          }       
        } 
        else 
        { 
         $out = SIGN_UP_USERNAME_CRASHED; 
        } 
      }      
     } 
     else 
     { 
      $out = FAILED; 
     } 
    break; 

    case "sendMessage": 
    if ($userId = authenticateUser($db, $username, $password)) 
     { 
     if (isset($_REQUEST['to'])) 
     { 
      $tousername = $_REQUEST['to']; 
      $message = $_REQUEST['message']; 

      $sqlto = "select Id from users where username = '".$tousername."' limit 1"; 



        if ($resultto = $db->query($sqlto))   
        { 
         while ($rowto = $db->fetchObject($resultto)) 
         { 
          $uto = $rowto->Id; 
         } 
         $sql22 = "INSERT INTO `messages` (`fromuid`, `touid`, `sentdt`, `messagetext`) VALUES ('".$userId."', '".$uto."', '".DATE("Y-m-d H:i")."', '".$message."');";      

           error_log("$sql22", 3 , "error_log"); 
          if ($db->query($sql22)) 
          { 
            $out = SUCCESSFUL; 
          }    
          else { 
            $out = FAILED; 
          }      
         $resultto = NULL; 
        } 

     $sqlto = NULL; 
     } 
     } 
     else 
     { 
      $out = FAILED; 
     } 
    break; 

    case "addNewFriend": 
     $userId = authenticateUser($db, $username, $password); 
     if ($userId != NULL) 
     { 

      if (isset($_REQUEST['friendUserName']))   
      {    
       $friendUserName = $_REQUEST['friendUserName']; 

       $sql = "select Id from users 
           where username='".$friendUserName."' 
           limit 1"; 
       if ($result = $db->query($sql)) 
       { 
         if ($row = $db->fetchObject($result)) 
         { 
          $requestId = $row->Id; 

          if ($row->Id != $userId) 
          { 
            $sql = "insert into friends(providerId, requestId, status) 
             values(".$userId.", ".$requestId.", ".USER_UNAPPROVED.")"; 

            if ($db->query($sql)) 
            { 
              $out = SUCCESSFUL; 
            } 
            else 
            { 
              $out = FAILED; 
            } 
          } 
          else 
          { 
           $out = FAILED; // user add itself as a friend 
          }             
         } 
         else 
         { 
          $out = FAILED;      
         } 
       }        
       else 
       { 
         $out = FAILED; 
       }    
      } 
      else 
      { 
        $out = FAILED; 
      }   
     } 
     else 
     { 
      $out = FAILED; 
     } 
    break; 

    case "responseOfFriendReqs": 
     $userId = authenticateUser($db, $username, $password); 
     if ($userId != NULL) 
     { 
      $sqlApprove = NULL; 
      $sqlDiscard = NULL; 
      if (isset($_REQUEST['approvedFriends'])) 
      { 
        $friendNames = split(",", $_REQUEST['approvedFriends']); 
        $friendCount = count($friendNames); 
        $friendNamesQueryPart = NULL; 
        for ($i = 0; $i < $friendCount; $i++) 
        { 
        if (strlen($friendNames[$i]) > 0) 
        { 
         if ($i > 0) 
         { 
          $friendNamesQueryPart .= ","; 
         } 

         $friendNamesQueryPart .= "'".$friendNames[$i]."'"; 

        }    

        } 
        if ($friendNamesQueryPart != NULL) 
        { 
        $sqlApprove = "update friends set status = ".USER_APPROVED." 
            where requestId = ".$userId." and 
               providerId in (select Id from users where username in (".$friendNamesQueryPart.")); 
           ";  
        } 

      } 
      if (isset($_REQUEST['discardedFriends'])) 
      { 
        $friendNames = split(",", $_REQUEST['discardedFriends']); 
        $friendCount = count($friendNames); 
        $friendNamesQueryPart = NULL; 
        for ($i = 0; $i < $friendCount; $i++) 
        { 
        if (strlen($friendNames[$i]) > 0) 
        { 
         if ($i > 0) 
         { 
          $friendNamesQueryPart .= ","; 
         } 

         $friendNamesQueryPart .= "'".$friendNames[$i]."'"; 

        }     
        } 
        if ($friendNamesQueryPart != NULL) 
        { 
        $sqlDiscard = "delete from friends 
             where requestId = ".$userId." and 
                providerId in (select Id from users where username in (".$friendNamesQueryPart.")); 
              "; 
        }      
      } 
      if ( ($sqlApprove != NULL ? $db->query($sqlApprove) : true) && 
         ($sqlDiscard != NULL ? $db->query($sqlDiscard) : true) 
       ) 
      { 
       $out = SUCCESSFUL; 
      } 
      else 
      { 
       $out = FAILED; 
      }  
     } 
     else 
     { 
      $out = FAILED; 
     } 
    break; 

    default: 
     $out = FAILED;  
     break; 
} 

echo $out; 



/////////////////////////////////////////////////////////////// 
function authenticateUser($db, $username, $password) 
{ 

    $sql22 = "select * from users 
        where username = '".$username."' and password = '".$password."' 
        limit 1"; 

    $out = NULL; 
    if ($result22 = $db->query($sql22)) 
    { 
     if ($row22 = $db->fetchObject($result22)) 
     { 
       $out = $row22->Id; 

       $sql22 = "update users set authenticationTime = NOW(), 
                   IP = '".$_SERVER["REMOTE_ADDR"]."' , 
                   port = 15145 
           where Id = ".$row22->Id." 
           limit 1"; 

       $db->query($sql22);    


     }  
    } 

    return $out; 
} 

?> 

поэтому я попробовал md5 также в своей регистрационной части вместо шифрования и соли. так что, когда я аутентифицирую пользователя и передаю, мне не нужно его расшифровывать. Я не знаю. В этой части я действительно ошибаюсь.

+2

* «Как получить имя пользователя и пароль для аутентификации с использованием md5» * - ** Почему ** мы должны внести свой вклад в потенциал и рядом с неизбежным взломом? Не используйте 'md5'. Он старый и восходит к 1996 году. С тех пор прошло много воды. Используйте что-то вроде ['this'] (http://www.php.net/manual/en/ref.password.php), например. Не говоря уже об использовании 'mysql_ugh *' –

+0

Копирование/вставка кода из Интернета, который вы не понимаете, редко заканчивается. –

ответ

2

вы пытаетесь сделать:

SELECT * FROM patient_user WHERE username = '$username' and encrypted_password = md5($password) 

?

+0

от функции getUserByusernameAndPassword ($ username, $ password) правильно? hmmm .., что единственный код мне нужно изменить там? – user3226149

+0

, который должен это сделать. или установите $ encPass = md5 ($ password) и поместите ... и encrypted_password = $ encPass; – bart2puck

+0

все еще не работает. можете ли вы опубликовать редактирование всей программы о том, что на самом деле мне нужно изменить? – user3226149

2

Вы знаете, что MD5 не может быть отменено. Итак, что вы будете делать, каждый раз, когда пользователь вводит пароль для входа в систему, вы вводите пароль в новую переменную и обрабатываете MD5 для этой переменной. Затем вы сравните эту переменную с паролем в базе данных.

Смежные вопросы