Почему ключ шифрования Laravel4.2 меньше, чем символ ключа шифрования в CodeIgniter?

Я сейчас изучаю Laravel4.2 и начинаю сравнивать с Codeigniter
Но я нашел некоторые проблемы на Ключ шифрования символ, как показано ниже
Я использовал этот ключ для тестирования в Laravel 4.2, но он не работает, потому что я получил сообщения
msgstr «mcrypt_encrypt (): размер ключа слишком велик для этого алгоритма»

Но это прекрасно работает, когда я использовал тот же Ключ шифрования в Codeigniter Последняя версия.

Мой вопрос: как Larave 4.2 защищен, если я использовал MCRYPT_RIJNDAEL_256 из Ключ шифрования

  • ‘ключ’ =>
    «SdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZ tE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrdSdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrd»,
  • ‘cipher’ => MCRYPT_RIJNDAEL_256,

0

Решение

Ключи AES должны быть неотличимы от случайных и иметь длину 16, 24 или 32 байта. Похоже, что Laravel добавляет дополнительную проверку для правильного размера ключа AES.

В основном то, что PHP mcrypt делает (не уверен насчет C-кода), что он расширяет ключевые данные 00 значение байтов, если ключ меньше 32 байтов, пока он не достигнет первого допустимого размера ключа AES. Если ключ больше 32 байт, он просто обрезает его до 32 байт. Это абсолютно против любой хорошей практики в отношении обработки ключей.

Таким образом, ваш ключ AES, скорее всего, просто интерпретируется как 'SdRlCcZtE2ujlTZv5S3JZKN5bJvGQkrd', закодированный как ASCII. это Добрый ключ, безусловно, не обеспечивает полной безопасности AES-256, поскольку ключ значительно уменьшает пространство ключей (с чуть более 8 байтов, если используется алфавит из 62 символов, при условии, что каждое значение в алфавите одинаково вероятно).

И обратите внимание, что MCRYPT_RIJNDAEL_256 является не AES, так что вы сможете расшифровать его только с библиотеками, которые поддерживают Rijndael с размер блока 256

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector