如何在Symphony数据库中存储密码哈希和密码?

问题描述 投票:-1回答:1

我正在将一个项目从Symphony迁移到Django。我需要使用密码导入所有用户。

为此,我需要知道密码如何存储在数据库中。对于每个用户密码,我需要了解4件事:

  • 用于生成哈希的算法

  • 迭代次数

  • 用于生成哈希的盐

  • 结果散列

该项目基于Symphony 3.4。开发人员对我说,他们使用的是默认的哈希算法,它是SHA512

我想迭代次数是1。

左查找盐和结果哈希。两者都应存储在数据库中。

在数据库的密码字段中存储如下字符串:fOEJQT89OWYfI+hBHT28RpTQRiWnyo49Rtxqv6DWY/EJ6cSkFdZ0Y36VaqjWI+1NNhRGCHBBGJvwdMD1c7GZfw==

我希望在这里找到哈希和盐但这是88个符号。SHA512具有64个字节长的哈希。

此字段中存储的数据格式是什么?哈希和盐都存储在这里吗?

database symfony hash passwords salt
1个回答
0
投票

您必须检查app/config/security.yml所使用的编码器。假设您有类似以下内容:

security:
    encoders:
        App\Entity\User: 'sha512'

它将使用具有默认设置的SHA512编码器。通过查看相应的编码器MessageDigestPasswordEncoder,我们可以收集到默认情况下它将使用5000次迭代,然后对它进行base64编码。

剩下的唯一一件事就是弄清楚是否使用了盐,以及如何产生盐。由于SHA512不会生成它自己的盐,因此您必须查看用户类并检查其MessageDigestPasswordEncoder方法。如果返回的是null,则不使用任何盐,否则在生成密码时必须模仿其行为或检索结果。

© www.soinside.com 2019 - 2024. All rights reserved.