Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Альтернатива base64, Подскажите метод кодирования данных
Rapp_colince  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 59
Пользователь №: 4760
На форуме: 8 лет, 7 месяцев, 28 дней
Карма:




Всем привет. Для межсерверного взаимодействия нужно обмениваться http запросами и, передавать данные в строке URL.
Условия:
1. Протокол http
2. Данные нужно кодировать (против сниферов и логирования на DNS).
3. Идеально подойдет метод base64, но к сожалению его нельзя использовать по условию задачи
4. Метод шифрования должен поддерживать реализацию на PHP и на JS.

Пробовал convert_uuencode(), но с ним возникла следующая проблема. Он перекодирует в набор символов, который нельзя использовать в URL. Кавычки, собаки, двоеточия, ... . Если дополнительно шифровать urlencode(), то при отправки получившегося URL через адресную строку браузера, некоторые поступают в php уже перекодированными, а некоторые - нет. Получается путаница. Также, при некоторых комбинациях, в строке получается последовательность символов %2f, которая блокируется апачем или нджинксом.
В общем, пол дня потратил и понял, что метод слишком капризный.

Подскажите альтернативный способ шифрования, поддерживающийся на php и на js, чтобы кодировал в символы, не используемые в URL.


--------------------
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DedMorozzz  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Эникейщик
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 4053
Пользователь №: 19498
На форуме: 7 лет, 1 месяц, 7 дней
Карма: 89




Цитата (Rapp_colince @ 28.10.2015 - 10:30)
Он перекодирует в набор символов, который нельзя использовать в URL. Кавычки, собаки, двоеточия


Реплейсишь все символы которые нельзя юзать в урл на другие. После реплейсишь их обратно
И у бейз64 тоже не все символы можно юзать в урл. Это так, к слову...

так же можешь юзать бейз64 вместе с бинарным видом. Делаешь pack(). Его бейзом и передаёшь.
Другими словами бейз только для передачи будет, а не для конвертации


--------------------
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
PMПисьмо на e-mail пользователюСайт пользователяICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Rapp_colince  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 59
Пользователь №: 4760
На форуме: 8 лет, 7 месяцев, 28 дней
Карма:




Цитата
Реплейсишь все символы которые нельзя юзать в урл на другие

Мне кажется, что получится как-то корявенько. Некоторые символы могу не учесть, некоторые могут появиться в будущих версиях unicode. Хотелось бы универсального решения.

Цитата
так же можешь юзать бейз64 вместе с бинарным видом. Делаешь pack(). Его бейзом и передаёшь.

Спасибо, добрый человек, попробую паковать.

После написания вопроса коллега предложил после urlencode() реплейсить символ % на /. После чего изчезла вероятность получить исключительные комбинации типа %2f на стыке кодированных символов. Также такой URL ничем не обрабатывается и не переводит автоматически символы (например %24 само заменялось на $) И, собственно, задача решена.


--------------------
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Alchemist  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 663
Пользователь №: 5285
На форуме: 8 лет, 5 месяцев, 29 дней
Карма: 9




простейший вариант (имхо) - перевести урл в аски коды и передавать в виде строки кодов.
$url = 'https://www.google.com/search?q=%D1%83%D1%80%D0%BB';
$encoded = implode('',array_map('dechex',array_map('ord',str_split($url,1)))); // 68747470733a2f2f7777772e676f6f676c652e636f6d2f7365617263683f713d254431253833254431253830254430254242
$decoded = implode('',array_map('chr',array_map('hexdec',str_split($encoded,2)))); // https://www.google.com/search?q=%D1%83%D1%80%D0%BB
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса