使用Bcrypt

时间:2016-11-17 22:52:09

标签: php symfony bcrypt

在阅读https://symfony.com/doc/current/security/custom_provider.html#create-a-user-class/时,我见过的所有示例都为Symfony\Component\Security\Core\User\UserInterface类实施了User。这个接口为salt字段定义了一个方法 - 但是我想使用Bcrypt来进行散列算法。

在我的app/config/security.yml文件中,我有:

encoders:
    AppBundle\Security\User\WebserviceUser:
        algorithm: bcrypt
        cost: 12

链接文件说:

  

如果getSalt()什么都不返回,则使用您在security.yml中指定的算法对提交的密码进行简单编码。如果指定了salt,则创建以下值,然后散列...

这是否意味着如果我指定使用Bcrypt,那么我不需要在用户数据库表中使用salt字段(因为当使用哈希值时,salt与其他密码在同一个字符串中Bcrypt)?

如果是这种情况,那么我猜测我可以将getSalt()方法留空,以便不会指定盐,并且将使用security.yml中的算法。< / p>

我的上述假设是否正确?如果不是,我如何实现用于提供密码哈希的bcrypt的用户提供程序?

我正在使用Symfony 3.1.6

1 个答案:

答案 0 :(得分:4)

Creating your First User中所述:

  

您需要使用Salt属性吗?

     

如果你使用bcrypt,没有。否则,是的。必须对所有密码进行哈希处理   用盐,但是bcrypt在内部完成。从本教程开始   使用bcrypt,用户中的getSalt()方法只需return null(就是这样   不曾用过)。如果您使用其他算法,则需要取消注释   用户实体中的salt行,并添加一个持久的salt属性。

如果您想在return null方法中{B}使用getSalt()