在Laravel 4.2到5.0更新后,Crypt :: decript函数停止工作

时间:2016-10-06 19:17:27

标签: php laravel encryption laravel-5 laravel-4.2

将L4.2更新为L5后,函数Crypt :: decrypt对L4.2上生成的哈希不起作用,但我的APP_KEY仍然相同。

DecryptException in Encrypter.php line 147:
MAC is invalid.

更新后生成的哈希值有效,但不适用于迁移之前的哈希值;

1 个答案:

答案 0 :(得分:1)

在我看来,由于列长度,您的64位数据正在被删除,我认为您存储的内容相对较大。我刚刚通过在数据库中添加一个非常大的缓存值来重现您的错误。在架构内进行以下更改,回滚并重新运行迁移:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCacheTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('cache', function(Blueprint $table)
        {
            $table->string('key')->unique();
            $table->longText('value');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('cache');
    }

}

您之前粘贴的记录给我一个NULL,我认为这是因为它是条纹化的。

迁移cache表后。放入相同的缓存值并回读,希望这次不会出现错误。手指交叉!

来源:https://laracasts.com/discuss/channels/general-discussion/daeling-with-decryptexceptioninvalid-data