我只是试图从.txt文件中提取散列数据,使用与password_verify()用户的. 从' 文件中提取的散列输入和用户输入的散列输入似乎与我从测试中得到的输出相匹配,但仍然是结果。verifyhashed passwordinput.txtverificationfalsehashed password但是,当我使用 echo 语句将用户显示的输出复制并粘贴到哈希变量$password_test中时,验证工作并导致true.当散列密码直接从.txt文件中提取到程序中时,显然会有所不同问题是。我觉得.txt文件导致password_verify()功能不strings一样的特殊格式可能与特殊格式有关,但我离题了。任何关于可能发生的事情的信息都会很好。$file = 'users.txt'; // get the form variable $userId = $_POST['user_signin_Id']; //$hashedPassword = password_hash($password, PASSWORD_BCRYPT); $file_lines = file_get_contents($file); list($name_fromFile, $email_fromFile, $userID_fromFile, $password_fromFile) = explode(':', $file_lines); $trimmed_hashed_password_fromFile = rtrim($password_fromFile, ":"); $password_test = '$2y$10$aQDNx09.73PjLmY2YgK/NuvInQPk.185vC4exOlZYgA2LiBchK6Xy'; if(trim($userID_fromFile) == $userId && password_verify(trim($_POST['user_signin_password']), $trimmed_hashed_password_fromFile)){ echo 'Logged in'. "<br/>"; echo $trimmed_hashed_password_fromFile . "<br/>"; echo $password_test; }// end if else{ //echo crypt($password, $hashedPassword) . "<br/>"; //cryptPassword($password, $password_fromFile) . "<br/>"; //echo $hashedPassword; echo $trimmed_hashed_password_fromFile . "<br/>"; echo $password_test . "<br/>"; echo gettype($trimmed_hashed_password_fromFile) . "<br/>"; echo gettype($password_test) . "<br/>"; }我没有收到任何错误消息向你们展示。PASSWORD_BCRYPT在使用函数中的参数对用户输入的密码进行哈希处理后,我希望结果是真实的,并且从文件password_hash()中将PASSWORD_BCRYPT加密密码拉入应用程序.txt。
2 回答

慕后森
TA贡献1802条经验 获得超5个赞
为了解决上图中发现的问题,我更改了以下行:
$trimmed_hashed_password_fromFile = rtrim($password_fromFile, ":");
到:
$trimmed_hashed_password_fromFile = ltrim($password_fromFile);
删除输出开头隐藏的左侧空格,而不是尝试从输出中删除任何冒号(因为它们不是问题)

一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
使用 var_dump() 函数,我想我找到了罪魁祸首。来自“.txt”文件的散列密码输入的开头有一个空格,直到使用 var_dump() 才成为父级。
- 2 回答
- 0 关注
- 163 浏览
添加回答
举报
0/150
提交
取消