Laravel документация говорит
Все зашифрованные значения Laravel подписаны с использованием кода аутентификации сообщения (MAC), поэтому их базовое значение не может быть изменено после шифрования.
На практике это означает, что полезная нагрузка сопровождается небольшим значением хеш-функции. Не секрет, как генерируется это значение, потому что Laravel - продукт с открытым исходным кодом. Исходный код говорит это:
// Once we get the encrypted value we'll go ahead and base64_encode the input
// vector and create the MAC for the encrypted value so we can then verify
// its authenticity. Then, we'll JSON the data into the "payload" array.
$mac = $this->hash($iv = base64_encode($iv), $value);
Лично я не вижу преимущества этого MAC для Laravel. Почему это там?
Я имею в виду, если у нас уже есть открытый ключ, который сопровождает сообщение и закрытый где-то закрытый ключ и openssl_encrypt
как процессор. Как MAC может способствовать безопасности? Или это способствует чему-то еще?