【问题标题】:Crypt error - 'MAC is invalid.'地穴错误 - “MAC 无效。”
【发布时间】:2015-06-01 23:50:33
【问题描述】:

我正在开发的网站包含一个消息传递系统。我正在使用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']),
            ]
        );

应用程序密钥在.env 文件中设置并且没有更改,消息是在错误发生之前发送的。表中的body 列的类型为TEXT

知道是什么原因造成的吗?

【问题讨论】:

标签: php laravel laravel-5


【解决方案1】:

试试这个:

composer dump-autoload

composer clear-cache

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

在这个过程中的某个地方,如果存在问题,问题应该会很明显。

【讨论】:

    【解决方案2】:

    app.php可以看到下面一行

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      相关资源
      最近更新 更多