Ich habe ein Problem mit crypt(). Wenn ein Benutzer ein Passwort hat (password1 in diesem Beispiel), und sie es in password2 ändern, gibt das Hashing das gleiche Ergebnis zurück. Sie können das hier testen: OLD LINK Geben Sie password1 als aktuelles Passwort und password2 als neues Passwort und bestätigen Sie das Passwort, Sie werden die Ergebnisse sehen. Wenn ein vollständig nicht ähnliches Passwort eingegeben wird, gibt es kein Problem. Ich verstehe, dass es andere Wege gibt, Passwörter usw. zu haseln. Ich bin neugieriger als alles andere. Mein Code ist unten:Krypte, die denselben Hash für zwei verschiedene (ähnliche) Passwörter zurückgibt
<?php
$oldpassword="password1";
echo "<form method=\"post\">
<p>Enter Current Password: <input type=\"password\" name=\"currentpassword\" /></p>
<p>Enter New Password: <input type=\"password\" name=\"password\" /></p>
<p>Confirm New Password: <input type=\"password\" name=\"confirmpassword\" /></p>
<p><input type=\"submit\" value=\"Change Password\"></p>
</form>";
$user_id = $_SESSION['user_id'];
$pass=$_POST['password'];
$salt = 'xxxxx';
$currentpassword = crypt($_POST['currentpassword'], $salt);
$oldpassword = crypt($oldpassword, $salt);
if(isset($_POST['password'])) {
if ($currentpassword !== $oldpassword) {
echo "The password you entered for current password does not match our records.";
}
else {
if ($_POST['password'] && $_POST['confirmpassword']) {
if ($_POST['password'] == $_POST['confirmpassword']) {
$hash = crypt($pass, $salt);
if ($hash == $currentpassword) {
echo "Current Password: ";
var_dump($_POST['currentpassword']);
echo "<br/>";
echo "New Password: ";
var_dump($_POST['password']);
echo "<br/>";
echo "New Hash: ";
var_dump($hash);
echo "<br/>";
echo "Current Password Hash: ";
var_dump($currentpassword);
echo "<br/>";
echo "<hr/>";
echo "Your new password cannot be the same as your current password.";
}
else {
echo "Your password has been changed successfully<br/>";
}
} else {
echo "Your passwords do not match. Please try again.";
}
}
}
}
?>
Wenn Sie bcrypt verwenden, beachten Sie, dass die maximale Passwortlänge 55 Zeichen beträgt. Sind die Passwörter, die Sie versuchen, länger als das? – Mike
Nicht in diesem Beispiel. – dcclassics
Welchen crypt() Algorithmus verwendest du? – TML