Php 为什么播种机中的哈希方法与控制器中的哈希方法不同?拉威尔5.1

Php 为什么播种机中的哈希方法与控制器中的哈希方法不同?拉威尔5.1,php,mysql,laravel,hash,laravel-5.1,Php,Mysql,Laravel,Hash,Laravel 5.1,在我的播种机中,我对代码进行了如下哈希处理: 'validCode' => Hash::make('1110578abc') 它在数据库中给出这个结果:$2y$10$GAKHHHXRMNCNZR 当我通过控制器中的输入对同一代码进行散列时,由于Bcrypt添加了随机salt,它给出了不同的值 控制器: dd(Hash::make(Input::get('code'))); (我在这个输入字段中输入了1110578abc。) 它给了我这个值: $2y$10$xxvu78cphjegott

在我的播种机中,我对代码进行了如下哈希处理:

'validCode' => Hash::make('1110578abc')
它在数据库中给出这个结果:$2y$10$GAKHHHXRMNCNZR

当我通过控制器中的输入对同一代码进行散列时,由于Bcrypt添加了随机salt,它给出了不同的值

控制器:

dd(Hash::make(Input::get('code')));
(我在这个输入字段中输入了1110578abc。)

它给了我这个值:

$2y$10$xxvu78cphjegott1teny.LeLb7kBjDvP9Npbf1h4.T4HDtuIFD16


对于我的应用程序,我想检查这两个值是否匹配。有人知道我怎么做吗?

您可以使用
Hash::check()
方法。
check
方法允许您验证给定的纯文本字符串是否对应于给定的哈希。 尝试:


回答我帖子的特定代码:

if (Hash::check(Input::get('code') , '$2y$10$GaKhhxrMNCnzr'))
{ 
    dd('match');
} 
else 
{ 
    dd('no match'); 
}

这就解决了问题并返回“匹配”。

在那篇文章中,他们解释了问题发生变化的原因,这是很有用的。但这仍然不能解决我的问题。如果输入的代码与数据库中的哈希代码总是不同的话,我如何检查它们是否匹配?我编辑了我的问题以澄清这一点。我以前在laravel文档中发现过这一点,但我注意到我以前以错误的方式使用过此方法。用这个方法再试一次就可以了:if(Hash::check(Input::get('code'),'2y$10$GaKhhxrMNCnzr')){dd('match');}else{dd('no match');}
if (Hash::check(Input::get('code') , '$2y$10$GaKhhxrMNCnzr'))
{ 
    dd('match');
} 
else 
{ 
    dd('no match'); 
}