Warning: openssl_decrypt(): Failed to base64 decode the input

rafaello

Новичок
Привет всем!
Есть вопрос по работе функции openssl_decrypt()
Необходимо через URL браузера передать зашифрованную фразу.
Соответственно, есть два файла. Первый шифрует и сохраняет в БД.
Потом через браузер это хозяйство передается на другой файл, где искомая фраза расшифровывается.
Все работает нормально.
Однако мне надо выполнить защиту от дурака, а именно, процесс копирования и вставки в браузер шифрованной фразы
производится разными юзерами и соответственно, кто то может скопировать код не полностью.
Короче, проблема в том, что если в строке кода упущен хоть один символ, то на экран выходит ошибка,
указанная в заголовке тикета.
Я понимаю, что можно отключить вывод ошибок и предупреждений на экран, но все таки это не лучшее решение.
Хотелось бы вобщем избежать это предупреждение.
файл первый
PHP:
$textToEncrypt = "privet";
$encryptionMethod = "aes-128-xts";
$secret = "C34095W8g";
$iv = '12345';
$encryptedText = openssl_encrypt($textToEncrypt,$encryptionMethod,$secret, 0, $iv);
файл второй
PHP:
$url = 'http://my-site.com?gg='.rawurlencode($encryptedText);
$text_to_Decrypt = $_GET['gg'];
$encryptionMethod = "aes-128-xts";
$secret = "C34095W8g";
$iv = '12345';
$decryptedText = openssl_decrypt($text_to_Decrypt, $encryptionMethod, $secret, 0, $iv);
Так вот, если в переменной $encryptedText изменить хотя бы один символ, то выходит это самое предупреждение.
Как этого избежать?
 
PHP:
$iv = '1234567812345678';
if($decryptedText !== false){здесь выполняется код}
небольшие изменения/дополнения
$iv не может быть менее 16 bytes
 
я так понимаю, что проверить переменную $text_to_Decrypt перед выполнением openssl_decrypt() нет возможности.
Может еще порекомендуете другие способы шифрования с ключом для передачи через url и чтобы шифрованная фраза была не очень длинной?
 
вне зависимости от способа, пиши ошибки в лог, отключи вывод на экран, это обязательно (в своем локальном окружении можно выводить на экран, на продакшине нет). тем более что это решает выше изложенную проблему, тем более что это не единственное сообщение которые вероятнее всего видят пользователи
 
да там скрипты в 5 строк а не какой-то продукт нормальный

собаку поставить и всё, это тот случай когда можно
 
сложно сделать решение хуже, потому что
а) вместо шифрованной фразы можно передать ULID записи в базе
б) для передачи зашифрованной строки в URL есть стандарт JWT
в) лучше sodium (polyfil)
 
Сверху