加密错误 - 'MAC无效'。

时间:2015-06-01 23:50:33

标签: php laravel laravel-5

我正在开发的网站包括一个邮件系统。我正在使用Crypt::()加密表格中的邮件。用户收到消息并显示此错误:

exception 'Illuminate\Contracts\Encryption\DecryptException' with message 'MAC is invalid.' 
in /home/forge/cvahimt.org/releases/20150601155111/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php:147

我正在加密消息:

// Message
        $message = Message::create(
            [
                'thread_id' => $thread->id,
                'user_id' => Auth::user()->id,
                'body' => Crypt::encrypt($input['message']),
            ]
        );

app密钥在.env文件中设置且尚未更改,消息是在错误发生之前发送的。表中的body列的类型为TEXT

知道可能导致这种情况的原因吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

composer dump-autoload

composer clear-cache

然后,清除数据库中的所有种子并重新种植。

在这个过程的某个地方,如果有问题,问题应该会显现出来。

答案 1 :(得分:1)

app.php中,您可以看到以下行

'key' => env('APP_KEY', 'SomeRandomString')

有时env会将'APP_KEY'(引用:https://laracasts.com/discuss/channels/general-discussion/env-not-reading-variables-sometimes)值返回为空,因此在加密或解密时默认值将被视为"SomeRandomString"。所以,你可以像

一样替换它
'key' => env('APP_KEY', 'xxxxxxxxxxxxx')

其中'xxxxxxxxxxxxx'.env文件的APP_KEY值完全匹配。