【问题标题】:Laravel comparing user input plain text password with external database bcrypted passwordLaravel 将用户输入的纯文本密码与外部数据库 bcrypted 密码进行比较
【发布时间】:2023-04-03 08:03:01
【问题描述】:

我有 2 个数据库表,由 2 种不同的用户类型组成。

用户和玩家。

玩家拥有来自游戏内插件的用户数据,其中密码是 BCrypted。 用户一为空,用于存储来自 Players 表的用户信息。

我正在比较用户名和密码。 问题是从网站中的用户输入获取纯文本密码,而从另一个表中,密码已经 bcrypted 并且 Laravel bcrypt 与 Players 表中的 bcrypted 密码不匹配。

我有哪些选项可以比较密码以确认这是尝试登录的用户。

游戏内插件密码:

$2a$10$lpVYpSJ4O6Mt03eItJeipOWR8LGHP8dgk4a09.e6BFKVoYNAgjz86

Laravel 明文加密:

$2y$10$yZoq3xBsfow49pL6UyGD2.5NKlmHOmfnCFc9JD5ZjDz3pf5K1XMhG 

两个密码相同。

【问题讨论】:

  • 你用的是普通的bcrypt吗?你可能会想到在 laravel 中使用 Hash 类,并在两边实现相同的。即使您正在尝试 bcrypt,也只是一个建议,这是正确的。
  • 我正在使用这个link 这是一个用于身份验证插件的开源存储库。
  • 这里使用的 bcrypt 与 laravel bcrypt 不同,这就是你得到错误的原因。
  • 我有哪些比较密码的选项?
  • 使用支持 PHP 和 Java 的常用加密器,Google 是你的朋友。

标签: laravel encryption cryptography compare


【解决方案1】:

尝试使用 Hash::check() 函数来比较普通密码和散列密码。

if (Hash::check('plain-text', $hashedPassword)) {
   // The passwords match...
}

【讨论】:

  • 没有没有用。尝试将 bcrypted 与纯文本进行比较。不匹配。我知道他们是同一个密码。
【解决方案2】:

我找到了一个解决方案,通过使用一个库来帮助我将插件集成到我的网站上。

除此之外,我还必须在插件的配置文件中进行一些小配置。更改加密方法,使其与我的 Laravel 应用程序 (BCrypt) 中的加密方法相匹配。

后来我发现我不需要解密密码,只需比较哈希即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2014-08-10
    • 1970-01-01
    相关资源
    最近更新 更多