0

我用 crypt() 函数加密了我的密码。当用户想要登录时,我如何检查存储在数据库中的密码并输入此密码?

例如:

$pass = "fgyi34".$pass."@1187Gh";

$hashed_password = crypt($pass);
4

4 回答 4

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从数据库中获取加密数据usernameuser input与. hashed passwordcrypt

示例 #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!";
    }
  }
?>
于 2013-08-20T06:40:44.190 回答
0

对于新用户。
crypt密码并将其存储在数据库中。

对于现有用户
crypt,当用户单击提交按钮时,将密码存储在变量中,将加密密码与数据库中较早的加密密码进行比较。如果密码不匹配,则向用户显示密码错误的消息。

于 2013-08-20T06:19:12.440 回答
0

注册时将 $hashed_pa​​ssword 存储到数据库中。

登录时,使用 mysql 查询中存储的密码检查加密密码

于 2013-08-20T06:19:58.693 回答
0

Crypt 密码无法反转,因此请按照以下步骤进行密码加密:

1)生成一个随机数并对其进行加密。2)加密后将其保存在数据库列字段中。3)登录时,交叉检查输入的密码并再次加密。4)用散列密码检查这个新密码。

于 2013-08-20T06:24:25.140 回答