2017-05-11 49 views
1

我有2个由2种不同用户类型组成的数据库表。Laravel将用户输入的纯文本密码与外部数据库加密密码进行比较

用户和玩家。

玩家使用游戏插件中的用户数据进行密码验证。 用户为空,用于存储Players表中的用户信息。

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

我的选择是对的密码,以确认这是试图登录的用户比较

在游戏插件密码:

$2a$10$lpVYpSJ4O6Mt03eItJeipOWR8LGHP8dgk4a09.e6BFKVoYNAgjz86

Laravel纯文本bcrypted:

$2y$10$yZoq3xBsfow49pL6UyGD2.5NKlmHOmfnCFc9JD5ZjDz3pf5K1XMhG 

两个密码都是一样的。

+0

你使用的是普通的bcrypt吗?您可能会想到在laravel中使用Hash类并在两侧实现相同的功能。只是一个建议,即使你尝试bcrypt,这是正确的。 –

+0

我使用这个[link](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/java/fr/xephi/authme/security/crypts/BCrypt.java)它是一个开放的用于验证插件的源库。 –

+0

这里使用的bcrypt与laravel bcrypt不同,这就是为什么你会遇到错误。 –

回答

0

我找到了一个解决方案,通过使用一个库帮助我在我的网站上集成插件。我不得不在插件的配置文件中做一些小配置。更改加密方法,使其与我的Laravel应用程序(BCrypt)中的相匹配。

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

1

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

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

不行不行。试图比较bcrypted与纯文本。不匹配。我知道他们是相同的密码。 –

相关问题