DefaultPasswordHasher为相同的值生成不同的哈希

丹尼尔·法里亚(Daniel Faria)

我有存储在密码database哈希与DefaultPasswordHasheradd行动。

我还有另一项更改登录用户密码的操作,在此表单上,我有一个字段current_password,需要与中的当前密码值进行比较database

问题是,DefaultPasswordHasher每次我对表单的值进行哈希处理时都会生成一个不同的哈希,因此这将永远与数据库中的哈希不匹配。

请遵循“ current_password”字段的验证代码:

    ->add('current_password', 'custom', [
        'rule' => function($value, $context){
            $user = $this->get($context['data']['id']);
            if ($user) {
                echo $user->password; // Current password value hashed from database
                echo '<br>';
                echo $value; //foo
                echo '<br>';
                echo (new DefaultPasswordHasher)->hash($value); // Here is displaying a different hash each time that I post the form

                // Here will never match =[
                if ($user->password == (new DefaultPasswordHasher)->hash($value)) {
                    return true;
                }
            }
            return false;
        },
        'message' => 'Você não confirmou a sua senha atual corretamente'
    ])
何塞·洛伦佐·罗德里格斯

这就是bcrypt的工作方式。Bcrypt是一种更强大的密码哈希算法,它将根据当前系统的熵为同一值生成不同的哈希值,但是它能够比较原始字符串是否可以哈希为已经哈希的密码。

要解决您的问题,请使用check()函数而不是hash()函数:

 ->add('current_password', 'custom', [
        'rule' => function($value, $context){
            $user = $this->get($context['data']['id']);
            if ($user) {
                if ((new DefaultPasswordHasher)->check($value, $user->password)) {
                    return true;
                }
            }
            return false;
        },
        'message' => 'Você não confirmou a sua senha atual corretamente'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么hashrow()为相同的字符串值生成不同的哈希?

来自分类Dev

相同文件的 Python 哈希值不同

来自分类Dev

为什么sha1为相同的输入字符串返回不同的哈希值?

来自分类Dev

为什么使用crypto-js为不同的pdf文件获得相同的哈希值?

来自分类Dev

用于为float []中的值生成相同的唯一ID /哈希的算法

来自分类Dev

我应该如何在此Perl哈希中为两个不同的键分配相同的值?

来自分类Dev

为所有字谜生成相同的唯一哈希码

来自分类Dev

具有相同哈希值的不同python Frozensets

来自分类Dev

Laravel 4-哈希相同的密码给出不同的值

来自分类Dev

相同的哈希键,不同的值:如何比较它们?

来自分类Dev

相同的哈希键,不同的值:如何比较它们?

来自分类Dev

来自不同文件的哈希值始终相同

来自分类Dev

公式为相同的变量返回不同的值

来自分类Dev

solr为不同的值给出相同的分数

来自分类Dev

为什么我的密码哈希函数使用相同的盐值会产生不同的哈希值?

来自分类Dev

值为0.5和1.0的NSNumber具有相同的哈希

来自分类Dev

命令行生成的哈希值与在线哈希生成器不同……

来自分类Dev

LabelEncoder将不同的值编码为相同的值

来自分类Dev

为“大致”相同的代码引用生成不同的表达式

来自分类Dev

为什么Spring的BCryptPasswordEncoder为相同的输入生成不同的输出?

来自分类Dev

CC_SHA256为不同的输入生成相同的输出

来自分类Dev

C#不同的随机函数都生成相同的值

来自分类Dev

为什么 git 为具有不同名称和位置的文件分配相同的哈希?

来自分类Dev

int的哈希值是相同的数字

来自分类Dev

检查相同的哈希表值

来自分类Dev

int的哈希值是相同的数字

来自分类Dev

为向量的相同组合获取不同的相关值

来自分类Dev

gettid()为两个不同的线程返回相同的值?

来自分类Dev

为什么为不同的对象分配相同的值?

Related 相关文章

  1. 1

    为什么hashrow()为相同的字符串值生成不同的哈希?

  2. 2

    相同文件的 Python 哈希值不同

  3. 3

    为什么sha1为相同的输入字符串返回不同的哈希值?

  4. 4

    为什么使用crypto-js为不同的pdf文件获得相同的哈希值?

  5. 5

    用于为float []中的值生成相同的唯一ID /哈希的算法

  6. 6

    我应该如何在此Perl哈希中为两个不同的键分配相同的值?

  7. 7

    为所有字谜生成相同的唯一哈希码

  8. 8

    具有相同哈希值的不同python Frozensets

  9. 9

    Laravel 4-哈希相同的密码给出不同的值

  10. 10

    相同的哈希键,不同的值:如何比较它们?

  11. 11

    相同的哈希键,不同的值:如何比较它们?

  12. 12

    来自不同文件的哈希值始终相同

  13. 13

    公式为相同的变量返回不同的值

  14. 14

    solr为不同的值给出相同的分数

  15. 15

    为什么我的密码哈希函数使用相同的盐值会产生不同的哈希值?

  16. 16

    值为0.5和1.0的NSNumber具有相同的哈希

  17. 17

    命令行生成的哈希值与在线哈希生成器不同……

  18. 18

    LabelEncoder将不同的值编码为相同的值

  19. 19

    为“大致”相同的代码引用生成不同的表达式

  20. 20

    为什么Spring的BCryptPasswordEncoder为相同的输入生成不同的输出?

  21. 21

    CC_SHA256为不同的输入生成相同的输出

  22. 22

    C#不同的随机函数都生成相同的值

  23. 23

    为什么 git 为具有不同名称和位置的文件分配相同的哈希?

  24. 24

    int的哈希值是相同的数字

  25. 25

    检查相同的哈希表值

  26. 26

    int的哈希值是相同的数字

  27. 27

    为向量的相同组合获取不同的相关值

  28. 28

    gettid()为两个不同的线程返回相同的值?

  29. 29

    为什么为不同的对象分配相同的值?

热门标签

归档