Base64_encode в URL

0

Я пытаюсь зашифровать параметр GET в URL.

    $encrypt_method = "AES-256-CBC";
$secret_key = 'This is my secret key';
 $secret_iv = 'This is my secret iv';
$key = hash('sha256', $secret_key);
 $iv = substr(hash('sha256', $secret_iv), 0, 16);
 $output = openssl_encrypt($adresa, $encrypt_method, $key, 0, $iv);
 $xy = base64_encode($output);
 $encoded_uniqid_file = rtrim($xy , '=');

 $click = 'OtvoriProzor("'.$file_path.'&pk='.$sesija->pk.'&adresa='.$encoded_uniqid_file.
 '&IDIstorijaElement='.$element->GetId().'", "Prevod", 700, 500);';

то я получаю этот url

$adresa = str_repeat('=', strlen($adresa) % 4);
if(base64_decode($adresa, true))
{
      $encrypt_method = "AES-256-CBC";
      $secret_key = 'This is my secret key';
      $secret_iv = 'This is my secret iv';
      $iv = substr(hash('sha256', $secret_iv), 0, 16);
      $key = hash('sha256', $secret_key);

      $adresa = openssl_decrypt(base64_decode($adresa), $encrypt_method, $key, 0, $iv);           
}

Моя самая большая проблема - base64_encode в параметрах URL. Будут ли некоторые символы прервать мой скрипт, как + = Я попытался удалить эти символы, но позже в моем коде нужно проверить

if(base64_decode($adresa, true))

будет ли это оцениваться как false, если я удалю charachters, как +, = до этой проверки

Теги:

1 ответ

1
Лучший ответ

base64 не сохраняет URL. также не удалять знак =.

Использовать это:

urlencode($xy)

вместо

rtrim($xy, '=');

Вероятно, вам нужно закодировать pk:

'&pk='.urlencode($sesija->pk).'&adresa='

  • 0
    но мне нужно проверить, если (base64_decode ($ adresa, true)) я думаю, что это невозможно получить проверку с помощью urlencode
  • 0
    Вам нужно только отправить закодированный параметр, параметр $ _GET будет декодирован автоматически
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню