使用相同的哈希函数 sha1 的不同密码


different password using the same hash function sha1

这是针对注册页面的

        $query = $db->prepare ('INSERT INTO user(user_first_name, user_last_name,user_password) VALUES (:f_name, :l_name, :u_pass)');
        $query -> bindParam(':f_name', $_POST['user_fname']);
        $query -> bindParam(':l_name', $_POST['user_lname']);
        $passSh1 = sha1($_POST['user_pass']);
        $query -> bindParam(':u_pass', $passSh1);

和这个用于登录页面

            $query1 -> bindParam(':f_name', $_POST['user_fname']);
            $passSh2 = sha1($_POST['user_pass']);
            $query1 -> bindParam(':u_pass', $passSh2);
            echo $passSh2 . '</br';

当我使用注册页面尝试使用密码"Z"时,我得到这个"395DF8F7C51F0070"

当我尝试使用登录页面时,我得到'395DF8f7C51F007019CB30201C49E884B46b92FA'

检查数据库中user_password字段允许的长度,它肯定看起来像是在截断它,我认为唯一可能的方法是您正在使用VARCHAR(16)或其他东西。

sha1 是一个 40 个字符长的哈希。你应该使用 CHAR(40) 。