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

Php 使用相同哈希函数sha1的不同密码,php,Php,这是一个注册页面 $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

这是一个注册页面

        $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';
$query1->bindParam(':f_name',$_POST['user_fname']);
$passSh2=sha1($_POST['user_pass']);
$query1->bindParam(':u_pass',$passSh2);

echo$passSh2。” 检查数据库中用户密码字段的允许长度,它看起来肯定是在截断它,我看到的唯一可能的方法是使用
VARCHAR(16)
或其他东西。

sha1是一个40字符长的散列。您应该使用CHAR(40)。

您在哪里读取这些值?第二个散列是正确的。第一个问题看起来被什么东西截断了。为什么这个问题被标记为pdo,而它实际上是在询问哈希?您不能只比较2个哈希值,而不使用任何额外的代码吗?不要使用
sha1()
对密码进行哈希,请使用bcrypt或最近添加的密码哈希api。