मुझे क्रिप्ट() का उपयोग करने में कोई समस्या है, जहां उपयोगकर्ता के पास पासवर्ड है (इस उदाहरण में पासवर्ड 1), और वे इसे पासवर्ड 2 में बदल देते हैं, हैशिंग एक ही परिणाम देता है। आप यहां परीक्षण कर सकते हैं: पुराना लिंक पासवर्ड 1 को वर्तमान पासवर्ड के रूप में टाइप करें, और पासवर्ड 2 को नया पासवर्ड और पासवर्ड की पुष्टि करें, तो आप परिणाम देखेंगे। यदि एक पूरी तरह से गैर समान पासवर्ड दर्ज किया गया है तो कोई समस्या नहीं है। मैं समझता हूं कि हैशिंग पासवर्ड आदि के बारे में जाने के अन्य तरीके हैं। मैं किसी भी चीज़ से ज्यादा उत्सुक हूं। मेरा कोड नीचे है:क्रिप्ट दो अलग-अलग (समान) पासवर्ड के लिए एक ही हैश लौट रहा है
<?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.";
}
}
}
}
?>
यदि आप bcrypt का उपयोग कर रहे हैं, तो ध्यान रखें कि अधिकतम पासवर्ड लंबाई 55 वर्ण है। क्या आप इस पासवर्ड से अधिक समय तक कोशिश कर रहे हैं? – Mike
इस उदाहरण में नहीं। – dcclassics
आप किस क्रिप्ट() एल्गोरिदम का उपयोग कर रहे हैं? – TML