我可以使用哈希密码连接到数据库吗?

时间:2016-10-11 10:42:27

标签: php mysql laravel

我的应用程序需要连接到多个源(MySQL和Oracle)。

管理员用户可以添加来源。

他们将为这些来源提供凭据。

我会存储凭据,我不想将密码存储为明文,所以我 想要哈希吧。

然后我需要使用这些凭据进行连接并执行SELECT。

如何使用密码连接到mySQL,密码在我的数据库中进行了哈希。

当我意识到使用哈希密码连接时会有多么愚蠢!

我认为我实际需要做的只是在我的数据库中加密我的密码,然后在连接之前解密。关于我应该如何做的任何建议?

米克

3 个答案:

答案 0 :(得分:1)

在这里看起来像XY problem

您真正要求的是数据源身份验证管理。可以使用第三方身份验证完成。像LDAP或Kerberos之类的东西。

请阅读灵感:

或者将其保留为明文,以降低开发和支持的成本。

答案 1 :(得分:0)

不,您无法使用哈希密码连接到数据库。如果是这样的话就没有哈希点了。这继续:

  1. 您使用密码(字符串)创建用户。
  2. 使用散列算法将字符串转换为另一个固定长度(通常)字符串。
  3. 当您尝试使用密码登录系统时,哈希算法将再次运行您的密码,并查看它是否返回与您创建帐户时相同的哈希字符串。
  4. 如果是,请登录。
  5. 但是,如果输入哈希字符串,MySQL会将其视为实际密码并进一步散列。它不会匹配。因此,它不会工作。

答案 2 :(得分:0)

您无法使用散列密码连接到数据库,这是散列它们的重点。这意味着如果恶意获取它们,则无法使用它们。

我只需要在保存它们时使用mcrypt对它们进行加密,然后在连接到源时解密。

这可能是不需要PHD的最佳解决方案。

不确定为什么有人不能这样做。

我也在考虑为数据库连接编写小型API,这些API只会将数据传回我的主应用程序。