我用 crypt() 函数加密了我的密码。当用户想要登录时,我如何检查存储在数据库中的密码并输入此密码?
例如:
$pass = "fgyi34".$pass."@1187Gh";
$hashed_password = crypt($pass);
我用 crypt() 函数加密了我的密码。当用户想要登录时,我如何检查存储在数据库中的密码并输入此密码?
例如:
$pass = "fgyi34".$pass."@1187Gh";
$hashed_password = crypt($pass);
请阅读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!";
}
}
?>
对于新用户。
crypt
密码并将其存储在数据库中。
对于现有用户
crypt
,当用户单击提交按钮时,将密码存储在变量中,将加密密码与数据库中较早的加密密码进行比较。如果密码不匹配,则向用户显示密码错误的消息。
注册时将 $hashed_password 存储到数据库中。
登录时,使用 mysql 查询中存储的密码检查加密密码
Crypt 密码无法反转,因此请按照以下步骤进行密码加密:
1)生成一个随机数并对其进行加密。2)加密后将其保存在数据库列字段中。3)登录时,交叉检查输入的密码并再次加密。4)用散列密码检查这个新密码。