【问题标题】:Laravel Hash::check() using different salt and prefixLaravel Hash::check() 使用不同的盐和前缀
【发布时间】:2021-05-01 15:47:30
【问题描述】:

我使用不同的数据库和表进行用户身份验证。现在我以当前的哈希为例:

'$2a$08$UU.AJY.bcf0uJAp12WZvy.XE6CCgNAmuX8Hr17Pfkh3FRyFHWhBtO' = Test12345

但是当我使用 Hash::check('Test12345', '$2a$08$UU.AJY.bcf0uJAp12WZvy.XE6CCgNAmuX8Hr17Pfkh3FRyFHWhBtO') 时,它总是返回 false。所以我认为这是因为哈希使用了不同的方法,所以前缀是 $2a 而不是 $2y 和 8 轮而不是 12。我已经尝试使用 $2y$12$UU.AJY.bcf0uJAp12WZvy.XE6CCgNAmuX8Hr17Pfkh3FRyFHWhBtO 作为我的哈希来检查,这也不起作用我刚刚在另一个 stackoverflow 帖子上看到了,所以我试了一下。

提前致谢!

【问题讨论】:

  • 你最初是如何散列这些密码的?
  • 我没有散列它们,它来自第三方应用程序。 github.com/WoltLab/WCF/blob/master/wcfsetup/install/files/lib/… 那是生成密码的文件。
  • 你的意思是你通过Hash::check而不是Auth::check运行它,对吗?
  • @lagbox 是的,谢谢我改变了它,但在标题中它是正确的。

标签: php laravel cryptography bcrypt salt


【解决方案1】:

相同的值可以用不同的“代码”进行散列

登录使用:

if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) {

            return "login sucess";
        }
        else{
       
            return "fail";
        }

【讨论】:

  • 我已经尝试过了,但它不起作用,因为没有正确检查密码。
  • 使用 $password=bcrypt("test"); 在数据库中插入密码使用 bcrypt();加密
  • 我不保存密码,我只是检查它们。加密方法来自另一个应用程序。
  • 你能更详细地解释一下你要做什么吗?
  • 所以我有一个论坛软件使用的数据库。有一个注册模块,用户可以在其中创建一个帐户。该帐户存储到“database1”中,然后我的 Laravel 应用程序有另一个数据库(“database2”),现在我想使用另一个数据库,以便用户可以使用相同的凭据登录。问题是,论坛使用双盐哈希保存这些密码,我无法在 Laravel 中进行检查。
【解决方案2】:

好吧,终于找到了。我首先必须从哈希中获取盐并对密码进行一次哈希,然后验证它并且它可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-31
    • 2018-06-14
    • 2010-10-25
    • 2020-02-14
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    相关资源
    最近更新 更多