Laravel decrypt()抛出" DecryptException有效负载无效。"

时间:2017-09-13 14:36:12

标签: php laravel encryption laravel-5.4

我有经过身份验证的用户,为了进行调试,我尝试使用decrypt显示密码(因为它是使用encrypt()加密的。

为简化起见,我创建了一条新路由/test,我可以看到经过身份验证的用户的加密密码,如下所示:

Route::get('/test', function() {
    dd(Auth::user()->password)
});

这会让我回复:$2y$10$gdhYnCekBownWU62OitC6uSwoONfDWGO23FnaVwIgFPAeJI9L6DEa

但如果我尝试使用,它会抛出这个错误:

Route::get('/test', function() {
    dd(decrypt(Auth::user()->password))
});
  

DecryptException:有效负载无效。

我尝试了解这个问题,我发现了两件事:

1)"确保app键正确。"它曾经存在,但可以肯定的是,我再次运行php artisan key:generate。没有任何改变。

2)"这是一个CSRF问题"。我从web中的中间件内核禁用了csrf,也没有任何改变。而且我没有使用帖子请求,所以我怀疑这是我的问题。

我需要它,因为场景看起来像这样:我需要解密密码,因为我之前使用这种方法生成随机密码,并将其保存到数据库;我希望保持这种方法。

$randomPassword = rand(111111,999999);
$user->password = encrypt($randomPassword);
$user->save();

有谁知道这是什么原因或如何克服它?

1 个答案:

答案 0 :(得分:3)

You can't (link)。密码未经过加密,因此需要进行哈希处理。这是一种方式,一旦它被散列,它就不会被散去。

你应该做的是应该避免的事情。我无法想到您需要解密用户密码的任何用例。我认为您需要提出一个新策略,可能会从以下用户那里获取密码:lastname/yearofbirth