sha1 没有散列任何东西,我该如何阻止它这样做


sha1 is hashing nothing, how do I stop it from doing this?

这是代码:

<html>
<body>
<?php
$valid = true;

//Check for first name value
if (empty($_POST['texts'])) {
    echo 'You forgot to type something in<br />';
    $valid = false;
}
if ($valid == true) {
    $conn1 = mysqli_connect('xxx') or die('Error connecting to MySQL server.');
    $name=   $_POST['name'];
    $title=  sha1($_POST['title']);
    $texts= $_POST['texts'];
    $forum_id = $_POST['forum_id'];


        $name = str_replace("'","''",$name);
        $title = str_replace("'","''",$title);
        $title = str_replace("b074acd521","STREAMER",$title);
        $texts = str_replace("'","''",$texts);

        $title = substr($title,0,8);

        $sql = "INSERT INTO post (name,title, texts, forum_id) VALUES ('$name', '$title', '$texts', '$forum_id')";
        mysqli_query($conn1, $sql) or die('Error inserting to database.');
        mysqli_close($conn1);
        header('Location: requests.php');
        }
else {
    echo 'Click <a href="javascript:history.go(-1)">HERE</a> to go back and adjust your entry.';
}
?>
</body>
</html>

当我在网站上发帖并将 id 字段留空时,它仍然会生成一个 ID,我该如何解决这个问题?另外,如果名称字段为空,如何使其默认为某物?

大多数(如果不是全部)哈希算法都会哈希一个空字符串。 如果他们不这样做,他们就不会真正成为"诚实"的哈希值。这个想法是,你不应该能够破译原始输入的哈希。例如,如果满足以下条件:

All good boys deserve fudge!

All good boys deserve  fudge!

使用哈希算法将空白空间视为不可哈希,然后他们将获得相同的哈希,这将使它更容易破解。

如果不希望对空字符串进行哈希处理

,则需要在对其进行哈希处理之前检查字符串。像这样:

 if(!empty($_POST['user_input']) {
      $user_hash = sha1($_POST['user_input']);
 } else {
      echo "No input given, wiseguy!";
 }