Функция Crypt :: decript перестала работать после обновления Laravel 4.2 до 5.0

#php #laravel #encryption #laravel-5 #laravel-4.2

#php #laravel #шифрование #laravel-5 #laravel-4.2

Вопрос:

После обновления с L4.2 до L5 функция Crypt::decrypt не работает для хэшей, сгенерированных на L4.2, однако мой APP_KEY остался прежним.

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

Мои хэши, созданные после обновления, работают, но не для тех, которые были до миграции;

Комментарии:

1. laracasts.com/discuss/channels/general-discussion/…

2. Похоже, что шифр по умолчанию изменился между версиями 4.2 и 5. Я думаю, что это MCRYPT_RIJNDAEL_128 вернулось в Laravel 4, хотя, похоже, оно находится AES-256-CBC в Laravel 5.

3. На L5 я установил шифр как MCRYPT_RIJNDAEL_128, чтобы избежать этой проблемы, но все равно ничего не изменилось. все еще ошибка.

Ответ №1:

Мне кажется, что ваши 64 записанные данные удаляются из-за длины столбца, и я думаю, что вы храните что-то относительно большое. Я просто воспроизвел вашу ошибку, добавив в базу данных очень большое значение кэша. Внесите следующие изменения в свою схему, выполните откат и повторите миграцию:

 <?php

use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

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

Комментарии:

1. Не публикуйте ответы только для ссылок. Если что-то в ссылке отвечает на вопрос, опубликуйте это здесь вместе со ссылкой.

2. @astratyandmitry максимальная длина строк равна 220, и для моей миграции установлено значение: $table->string(‘account_number’, 255); И мои хэши L4.2 не расшифровываются

3. Вам нужно изменить $table->string('account_number') на $table->longText('account_number')

4. @astratyandmitry, я вношу эти изменения, а не решаю проблему. Я пытаюсь установить в другую папку проект с L4 и создать команду для расшифровки и сохранения в другой таблице, но не работает.