Laravel decrypt() 抛出"DecryptException The payload is invalid."



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

为了简化事物,我创建了一个新的路由/test,我可以看到身份验证的用户的加密密码:

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

这返回我:$2y$10$gdhYnCekBownWU62OitC6uSwoONfDWGO23FnaVwIgFPAeJI9L6DEa


但是,如果我尝试使用,它会给我带来这个错误:

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

decryptexception:有效载荷无效。


我尝试四处搜索这个问题,我发现的两件事是:

1)"确保应用程序密钥是正确的。"它以前在那里,但是可以肯定的是,我再次运行php artisan key:generate。什么都没有改变。

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


我需要它,因为场景看起来像这样:我需要解密密码,因为我会事先使用此方法生成一个随机密码,并将其保存到数据库中;我想保持这种方法。

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

有人知道这是什么原因还是如何克服?

你不能(链接)。密码没有加密,它们被哈希。这是一种方法,一旦被哈希,它就不会被束缚。

您要做的是应该避免的事情。我想不出任何用户需要解密用户密码的用例。我认为您需要提出一种新策略,也许是从以下用户中获取密码:lastname/yearofbirth

相关内容

最新更新