你好,我正在学习 XAMPP 并创建用户数据库。对于用户的密码和盐,我很困惑。老师说盐长度应该与密码长度相同。例如,如果我将密码长度 max 设置为 20,那么 salt 也应该为 20。但在我将密码数据插入数据库的测试下。无论salt长度如何变化,echo cryptoPassword($password . $salt),长度始终为40。如果我在数据库中设置密码长度小于40,则无法将encryptedPassword插入数据库密码中。我必须将数据库密码长度调整为40或更长,然后插入数据才能工作。那么是因为盐长度总是保持40吗?那么数据库中的密码长度必须大于/等于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);
1 回答
POPMUISE
TA贡献1765条经验 获得超5个赞
根据问题所附的图像,您正在尝试将(假定的)用户输入的密码存储在数据库中。这使得散列变得毫无意义,因为生成密码散列的全部目的是在数据库入侵的情况下保护密码。
在您的情况下,如果您坚持使用该sha1()
函数生成哈希,我建议您password
从表中删除该列,并添加一个存储 40 个字符长度的字符串的新列来存储您的哈希。
- 1 回答
- 0 关注
- 80 浏览
添加回答
举报
0/150
提交
取消