使用laravel重新密码密码

时间:2015-06-08 07:39:27

标签: laravel-4 bcrypt

我想知道如何解密password.suppose我正在使用Hash :: make(“admin123”)工作完美但如何解密?我已经尝试了以下两种方法

  1. Crypt::decrypt('$2y$10$v2yO0SCt1vOrVZCM8GWRjOuiV1IM3xQbSeq3klaITWVRqsavjaOPI','$2y$10')

  2. Crypt::decrypt('$2y$10$v2yO0SCt1vOrVZCM8GWRjOuiV1IM3xQbSeq3klaITWVRqsavjaOPI')

  3. 以上两个给我“数据无效。”

    其实我想重新使用所有密码,如

    $users = User->select('password')->where('activated','=',1)->get();
    foreach($users as $user){
        // when i register user then i am using Hash::make() mechanism
        // How to rehash $user->password
    }
    

1 个答案:

答案 0 :(得分:1)

这是不可能的。

更确切地说,这是可能的,但它并不快。事实上,它是可笑的慢。如果正确地对密码进行了哈希处理,那么单个“dehash”需要aeons ,这是荒谬的。而且它是设计的,这正是哈希与密码一起使用的原因。

散列函数是一种确定性的(即每次都以相同的方式工作)算法,它会对给定值进行加扰。它用于密码,因此您不能将它们保留为纯文本,但您仍可以在运行时进行比较,无论给定值是否与已经散列的值相同。这个想法很简单:对于相同的输入,散列是相同的,对于不同的输入,散列是不同的(几乎总是)。

给定哈希值,您无法获得源值。它不是加密。

如果您发现自己需要使现有哈希值无效,请改为编写NULL。然后,在登录期间,如果密码哈希为NULL,则向您的用户发送电子邮件,由于“您的身份验证系统发生了更改”而提示重置密码。

是否在网页上提醒用户取决于您,但是通过告知用户已发送带有密码重置说明的电子邮件,您已经给出了给定用户存在的可靠线索,这可能对于潜在的攻击者。 对于我们中间的偏执狂。