Обфускация текста с использованием base64_encode () - PullRequest
0 голосов
/ 14 апреля 2010

Я играю с шифрованием / дешифрованием в php. Интересные вещи!
Однако я сталкиваюсь с некоторыми проблемами, касающимися того, в какой текст зашифровывается.

Вот 2 функции, которые шифруют и дешифруют строку. Он использует ключ шифрования, который я установил как нечто неясное. Я на самом деле получил это из книги php. Я немного изменил его, но не для того, чтобы изменить его основную цель.

Ниже я создал небольшой пример, который может проверить каждый.
Но я заметил, что некоторые символы отображаются в виде «зашифрованной» строки. Символы, такие как «=» и «+». Иногда я передаю эту зашифрованную строку через URL. Что, возможно, не совсем подходит для моих скриптов получения. Я предполагаю, что браузер делает что-то со строкой, если видны определенные символы. Я действительно только догадываюсь.

Есть ли другая функция, которую я могу использовать, чтобы браузер не касался строки? или кто-нибудь знает достаточно php bas64_encode (), чтобы запретить использование определенных символов? Я действительно не собираюсь ожидать последнего как возможность. Но я уверен, что есть обходной путь.

наслаждайтесь кодом, кому бы он ни понадобился!

define('ENCRYPTION_KEY', "sjjx6a"); 

function encrypt($string) {

  $result = '';
  for($i=0; $i<strlen($string); $i++) {
    $char = substr($string, $i, 1);
    $keychar = substr(ENCRYPTION_KEY, ($i % strlen(ENCRYPTION_KEY))-1, 1);
    $char = chr(ord($char)+ord($keychar));
    $result.=$char;
  }
  return base64_encode($result)."/".rand();
}

function decrypt($string){
    $exploded = explode("/",$string);
    $string = $exploded[0];
  $result = '';
  $string = base64_decode($string);
  for($i=0; $i<strlen($string); $i++) {
    $char = substr($string, $i, 1);
    $keychar = substr(ENCRYPTION_KEY, ($i % strlen(ENCRYPTION_KEY))-1, 1);
    $char = chr(ord($char)-ord($keychar));
    $result.=$char;
  }

  return $result;
}

echo $encrypted = encrypt("reaplussign.jpg");
echo "<br>";
echo decrypt($encrypted);

Ответы [ 3 ]

3 голосов
/ 14 апреля 2010

Вы можете использовать функции PHP urlencode и urldecode , чтобы сделать результаты шифрования безопасными для использования в URL-адресах, например,

echo $encrypted = urlencode(encrypt("reaplussign.jpg"));
echo "<br>";
echo decrypt(urldecode($encrypted));
0 голосов
/ 14 апреля 2010

Если вы беспокоитесь о +, = и т. Д. Похожих персонажах, вам следует взглянуть на http://php.net/manual/en/function.urlencode.php и его друзей из раздела «Смотрите также» Кодируйте его в encrypt () и декодируйте в начале decrypt ().

Если это не работает для вас, может быть, какая-то простая замена?

$text = str_replace('+','%20',$text); 
0 голосов
/ 14 апреля 2010

Вы должны взглянуть на urlencode () , чтобы корректно экранировать строку для использования в запросе.

...