我有经过身份验证的用户,为了进行调试,我尝试使用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();
有谁知道这是什么原因或如何克服它?
答案 0 :(得分:3)
You can't (link)。密码未经过加密,因此需要进行哈希处理。这是一种方式,一旦它被散列,它就不会被散去。
你应该做的是应该避免的事情。我无法想到您需要解密用户密码的任何用例。我认为您需要提出一个新策略,可能会从以下用户那里获取密码:lastname/yearofbirth