我用crypt()函数加密了我的密码。 当用户想要登录时,我如何检查存储在数据库中的密码?
Ex的:
$pass = "fgyi34".$pass."@1187Gh";
$hashed_password = crypt($pass);
答案 0 :(得分:0)
对于新用户。
crypt
密码并将其存储在数据库中。
对于现有用户
crypt
密码并在用户单击提交按钮时将其存储在变量中,将加密密码与数据库中较早的加密密码进行比较。如果密码不匹配,则向用户显示密码错误的消息。
答案 1 :(得分:0)
在注册时将$ hashed_password存储到数据库中。
登录时,使用mysql查询中的存储密码检查加密密码
答案 2 :(得分:0)
加密密码无法撤消,请按照以下步骤进行密码加密:
1)生成一个随机数并对其进行加密。 2)加密后保存在数据库列字段中。 3)在登录时,交叉检查输入的密码并再次加密。 4)使用哈希密码检查这个新密码。
答案 3 :(得分:0)
请阅读Manual
。
用于基于散列的可选盐串。如果没有提供, 行为是由算法实现定义的,可以导致 意外结果
示例#1
<?php
$hashed_password = crypt( 'mypassword' ); // let the salt be automatically generated
/*
You should pass the entire results of crypt() as the salt for comparing a
password, to avoid problems when different hashing algorithms are used. (As
it says above, standard DES-based password hashing uses a 2-character salt,
but MD5-based hashing uses 12.)
*/
if ( crypt( $user_input, $hashed_password ) == $hashed_password ) {
echo "Password verified!";
}
?>
因此,每当用户尝试登录时,请使用password
从数据库中获取加密的username
,并将user input
和hashed password
与crypt
进行比较。
示例#2
<?php
$username = $_POST["username"];
$password = $_POST["password"];
$passhash = "SELECT `password` FROM `table` WHERE `username` = '{$username}'";
// execute the query and get the hashed password
if ( $passhash ) {
if ( crypt( $password, $passhash ) == $passhash ) {
echo "Password verified!";
}
}
?>