XAMPP password/salt 长度设置有什么特殊要求吗?

XAMPP any special requirement on the password/salt length setting?

enter image description here

您好,我正在学习 XAMPP 并创建用户数据库。关于用户的密码和盐,我很困惑。老师说加盐长度应该和密码长度一样。例如,如果我将密码长度最大值设置为 20,那么 salt 也应该是 20。但是在我将密码数据插入数据库的测试下。无论salt长度如何变化,echo encryptedPassword($password . $salt),长度始终为40。如果我将数据库中的密码长度设置为小于40,则无法将encryptedPassword插入到数据库密码中。我必须将数据库密码长度调整到40或更多,才能插入数据。那么是不是因为盐长度总是保持40?那么数据库中的密码长度必须大于 than/equal 到 40?

PHP code 
$email = htmlentities($_REQUEST['email']);
$firstName = htmlentities($_REQUEST['firstName']);
$lastName = htmlentities($_REQUEST['lastName']);
$password = htmlentities($_REQUEST['password']);
$birthday = htmlentities($_REQUEST['birthday']);
$gender = htmlentities($_REQUEST['gender']);

$salt = openssl_random_pseudo_bytes(20);
$encryptedPassword = sha1($password . $salt);

根据问题所附的图片,您正在尝试将(假定)用户输入的密码存储在数据库中。这使得哈希绝对无效,因为生成密码哈希的全部目的是在数据库入侵的情况下保护密码。

在您的情况下,如果您坚持使用 sha1() 函数生成散列,我建议您从 table 中删除 password 列并添加一个新列存储 40 个字符长度的字符串以存储您的哈希值。