2017-03-29 4 views
1

Ich verwende PHP crypt(). Hier habe ich mein Passwort mit crypt() gespeichert.Wie verschlüsselte Passwort in PHP während der Anmeldung übereinstimmen?

Bei der Anmeldung möchte ich mein Passwort mit dem eingegebenen Passwort und dem eingeloggten Passwort abgleichen, aber in crypt wird jedes Mal ein zufälliger String mit dem gleichen Passwort erzeugt.

Unten ist mein Login-Code.

$user_name=$_REQUEST['username']; 
$salt = ""; 
echo $password=crypt($_REQUEST['password'], $salt); 

$query ="select username , password from users where username = '".$user_name."'"; 
$result = mysqli_query($con , $query); 
$row = mysqli_fetch_assoc($result); 

echo "<pre>";print_r($row);exit; 

Login löschte

$1$oIllNdlE$y23rdM6qp4sv/P/bgfUE7/  //user input 

Array 
(
    [username] => sradha 
    [password] => $1$dI1IgbiD$NsfWU0fOHOzNEFbd7Vrx.0 //from data base 
) 

hier mein Passwort 123 ist, für gleiche 123 es Erzeugen von zwei unterschiedlichen Ergebnissen.

unten ist der Code, den ich an die DB am Einfügen, während Zeichen in: mit Krypta

user_name=$_REQUEST['username']; 
$salt = ""; 
$password=crypt($_REQUEST['password'], $salt); 
mysqli_query($con , "INSERT INTO users (username , password) VALUES ('sradha' , '".$password."')"); 

jeder Vorschlag, wie das Passwort übereinstimmen?

Antwort

1

Crypt-Funktion gibt die verschiedenen Daten jedes Mal zurück. Sie können hash_equal Funktion verwenden, um die verschlüsselten Zeichenfolgen zu vergleichen.

+0

nach dem Hinzufügen eines gültigen Salzes, es gibt nicht jedes Mal verschiedene Daten zurück. – sradha

Verwandte Themen