如何将文本框中的字符串与数据库行中的密码进行匹配

use*_*925 3 mysql sql database hash mysqli

我有一个数据库字段存储这样的密码:

TeacherPassword

j.lu01
pesci02
cricket01
Run Code Online (Sandbox Code Playgroud)

现在我有一个文本框,用户输入密码,如果它与其中一行匹配,则导航到下一页.下面是检查密码的代码.

 $teacherpassword = (isset($_POST['teacherpassword'])) ? $_POST['teacherpassword'] : '';

  if (isset($_POST['submit'])) {

    // don't use $mysqli->prepare here
    $query = "SELECT * FROM Teacher WHERE TeacherPassword = ? LIMIT 1";
    // prepare query
    $stmt=$mysqli->prepare($query);
    // You only need to call bind_param once
    $stmt->bind_param("s",$teacherpassword);
    // execute query
    $stmt->execute(); 
    // get result and assign variables (prefix with db)
    $stmt->bind_result($dbTeacherPassword);
Run Code Online (Sandbox Code Playgroud)

但我所做的是我更新了密码字段,以便该字段不会将passwrod显示为字符串,而是显示为一堆字符,以便他们的密码是安全的.以下是我做的更新:

UPDATE Teacher
SET TeacherPassword = Password(TeacherPassword);
Run Code Online (Sandbox Code Playgroud)

这导致密码字段现在看起来像这样:

TeacherPassword

    *6FF132E0666AC8462BC
    *FCF5F8CE105D0748315
    *FD4FA4B60EEF1E24050
Run Code Online (Sandbox Code Playgroud)

那么我的问题是,在我的MYsqli代码中,如何在文本框中输入字符串密码j.lu01以匹配数据库行中的哈希密码*6FF132E0666AC8462BC

Joh*_*Woo 6

如果是这种情况,那么hash在数据库上搜索之前,首先需要输入密码.顺便说一句,我尝试在sqlfiddle上运行并生成不同的哈希值

Password('j.lu01') => *7A48257211A5C6BF45C30374789E9027726D829D
Password('jlu_01') => *FCF5F8CE105D0748315591596E8A4F87A2E12B1A

-- your password field is truncated that's why it can't find the match also
-- alter TeacherPassword field and change it's length to 42
Run Code Online (Sandbox Code Playgroud)

你能检查你的TeacherPassword田地长度吗?

SQLFiddle