Когда вы что-то шифруете в Laravel, он возвращает строку JSON в кодировке base64 со всей необходимой информацией: IV, зашифрованная строка, HMAC.
Чтобы создать строку в формате шифратора Laravel, вы можетевыполните следующие действия.
Зашифруйте строку, используя AES-CBC. Хотя это не самый рекомендуемый режим, это режим, который использует Laravel. Вы можете использовать 256 или 128 бит, хотя вам, очевидно, следует использовать 256 (Laravel также пытается сериализовать переданное значение, поэтому вы должны сделать это тоже).
Создайте HMAC с помощью функцииhash_hmac()
. Необходимые параметры: IV (в кодировке base64) и зашифрованная строка. Объедините их и используйте свой ключ шифрования для создания HMAC, используя sha256
в качестве алгоритма хеширования.
Создайте массив с IV, зашифрованной строкой и HMAC. Laravel использует для этого функцию compact()
, поэтому я бы сделал то же самое.
JSON кодирует результирующий массив, а base64 - результирующую строку JSON.
Результатом должна быть закодированная строка, которую Laravel может расшифровать с помощью правильного ключа.
Для справки: Исходный код для класса Encrypter