Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将输入值(密码)与数据库';密码的哈希值_Php_Laravel_Hash_Credentials - Fatal编程技术网

Php 将输入值(密码)与数据库';密码的哈希值

Php 将输入值(密码)与数据库';密码的哈希值,php,laravel,hash,credentials,Php,Laravel,Hash,Credentials,你好 我正在创建一个程序,其中我所需要的所有凭据都是密码 $password = Input::get('password'); //eg: admin 当我试着将它和已经散列的数据库上的值进行比较时 $user = DB::table('users_table')->where('password',$password)->get(); //eg: hashed value for admin is '$10$zYy1fGLPh/eI/sj8YmkN8.sTTkD4k9t/gw

你好

我正在创建一个程序,其中我所需要的所有凭据都是密码

$password = Input::get('password'); //eg: admin
当我试着将它和已经散列的数据库上的值进行比较时

$user = DB::table('users_table')->where('password',$password)->get(); 
//eg: hashed value for admin is '$10$zYy1fGLPh/eI/sj8YmkN8.sTTkD4k9t/gwrkgGWOIufHvRYhKwTay'.

我不能用它获得任何成功的过滤器。我需要特殊的功能吗?感谢您的帮助。

您似乎正在尝试比较普通的
$password
,而不是尝试对其进行哈希运算,然后进行比较,例如

DB::table('users_table')->where('password', some_hash_function($password))->get() 

似乎您正在尝试比较普通的
$password
,而不是尝试对其进行散列,然后进行比较,例如

DB::table('users_table')->where('password', some_hash_function($password))->get() 

如果数据库中的密码是散列的,那么在将其用作搜索条件之前,您需要使用将散列密码存储在数据库中时使用的相同机制对用户输入的密码进行散列。当然,否则,它将与数据库上的值不匹配,即使它是正确的、未删除的值

$password = Input::get('password'); //eg: admin
$password = your_hash_function($password);


$user = DB::table('users_table')->where('password',$password)->get(); 

如果数据库中的密码是散列的,那么在将其用作搜索条件之前,您需要使用将散列密码存储在数据库中时使用的相同机制对用户输入的密码进行散列。当然,否则,它将与数据库上的值不匹配,即使它是正确的、未删除的值

$password = Input::get('password'); //eg: admin
$password = your_hash_function($password);


$user = DB::table('users_table')->where('password',$password)->get(); 

您使用什么方法散列密码?
然后,您必须将数据库中的密码与从输入中获取的密码的相同哈希方法进行比较

您用于哈希密码的方法是什么?
然后,您必须将数据库中的密码与从输入中获取的密码的相同哈希方法进行比较

您可以使用哈希检查

Hash::check('password', $password);

您可以使用哈希检查

Hash::check('password', $password);

如果您使用的是Laravel内置的
Hash::make()
,那么您将无法以您尝试的方式完成此任务

当您对密码进行散列(使用Laravel的散列或PHP的
password\u Hash()
)时,每次都会得到一个唯一的散列

您应该确实需要一个用户名,然后从该记录中提取密码散列,并使用
hash::check()
进行检查。 否则,您将需要从数据库中获取所有密码,迭代并检查每个密码。根据散列算法中的“成本”,如果有许多用户,这可能是一个昂贵的操作


现在我不知道您的表中是否有多个用户,但是如果您有,如果他们有相同的密码会发生什么情况?

如果您使用的是Laravel内置的
Hash::make()
,您将无法以您尝试的方式执行此操作

当您对密码进行散列(使用Laravel的散列或PHP的
password\u Hash()
)时,每次都会得到一个唯一的散列

您应该确实需要一个用户名,然后从该记录中提取密码散列,并使用
hash::check()
进行检查。 否则,您将需要从数据库中获取所有密码,迭代并检查每个密码。根据散列算法中的“成本”,如果有许多用户,这可能是一个昂贵的操作


现在我不知道您的表中是否有多个用户,但是如果您有,如果他们有相同的密码,会发生什么情况?

如何哈希$password?如何哈希$password?谢谢您的想法。。我尝试使用`$password=Hash::make('admin')`然后将其与数据库上的哈希值进行比较,但它没有给我一个
true
结果。我还尝试回显“$password=Hash::make('admin');”但每次我刷新浏览器时,该值都会发生变化xDUse
Hash::make($password)
,因为它是用户输入的密码,而不是像
'admin'
这样的任意字符串,因为Hash::make()每次使用时都会给您一个唯一的哈希,它永远不会匹配存储在数据库中的哈希值,所以这不会起作用。@MagnusEriksson谢谢你,不是Laravel专家,原始答案是通用的,所以我已将其返回给通用的谢谢你,先生。。我尝试使用`$password=Hash::make('admin')`然后将其与数据库上的哈希值进行比较,但它没有给我一个
true
结果。我还尝试回显“$password=Hash::make('admin');”但每次我刷新浏览器时,该值都会发生变化xDUse
Hash::make($password)
,因为它是用户输入的密码,而不是像
'admin'
这样的任意字符串,因为Hash::make()每次使用时都会给您一个唯一的哈希,它永远不会匹配存储在数据库中的哈希值,因此这将不起作用。@MagnusEriksson谢谢你,不是Laravel专家,原始答案是通用的,所以我已将其返回给一个通用答案谢谢你,先生@magnus Eriksson,以获取见解。。我也认为你是正确的,因为每次我刷新浏览器时,哈希值也在变化。。。我想我想做的是一件可以挽回的事。当您有多个用户时,您应该始终具有用户名(或任何其他标识符,如电子邮件等)。密码不是用来识别它是哪个用户的,它只是用来检查用户是否是他/她声称的用户。谢谢@magnus Eriksson先生的洞察力。。我也认为你是正确的,因为每次我刷新浏览器时,哈希值也在变化。。。我想我想做的是一件可以挽回的事。当您有多个用户时,您应该始终具有用户名(或任何其他标识符,如电子邮件等)。密码不是用来识别它是哪个用户的,它只是用来检查用户是否是他/她声称的用户。