#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 и создать команду для расшифровки и сохранения в другой таблице, но не работает.