为了账号安全,请及时绑定邮箱和手机立即绑定

Password_verify() 验证 .txt 哈希字符串输入问题

Password_verify() 验证 .txt 哈希字符串输入问题

PHP
蝴蝶不菲 2022-01-24 09:44:41
我只是试图从.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);

删除输出开头隐藏的左侧空格,而不是尝试从输出中删除任何冒号(因为它们不是问题)


查看完整回答
反对 回复 2022-01-24
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

使用 var_dump() 函数,我想我找到了罪魁祸首。来自“.txt”文件的散列密码输入的开头有一个空格,直到使用 var_dump() 才成为父级。

//img1.sycdn.imooc.com//61ee04c1000178af19191077.jpg


查看完整回答
反对 回复 2022-01-24
  • 2 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号