swanrnd
@swanrnd
Издатель HTML5 игр

Как закодировать цифры в символы?

Есть данные, которые состоят из 12 цифр.
0-9
, (запятая)
- (минус)
Перед тем как передавать на сервер я хочу закодировать в A-Za-z0-9+символы.
Это уменьшит трафик.

Как можно это зашифровать и расшифровать?

Может есть библиотеки? желательно на JavaScript
  • Вопрос задан
  • 1933 просмотра
Решения вопроса 2
mace-ftl
@mace-ftl
Я знаю хитрый способ!
1) Берёшь и представляется первый набор символов как ЦИФРУ в 12-ти ричной системе (0-9+","+"-")
2) Считаешь сколько у тебя СИМВОЛОВ в новой системе (A-Za-z0-9+символы)
3) Переводишь в систему с указанным основанием - ессно цифра будет КОРОЧЕ
4) Передаёшь, на той стороне всё обратно

П.С. при строках в 12 цифр это даст лучший результат, чем варианты со стандартными алгоритмами частотными стопудов
Ответ написан
Комментировать
Deerenaros
@Deerenaros
Программист, математик, задрот и даже чуть инженер
Окай. Делается это очень просто - мощность алфавита равняется 12ти, то есть нам потребуется 4 бита, чтобы его закодировать (хотим меньше - придётся обратится к хафманам). То есть свичём или ифами выбираем нужный квартет битов. Другими словами имеем отображение из символа в полубайт. Чтобы получать нормальные байты нужно разбивать на пары и складывать побитово результаты каждого символа с соответствующим смещением.

Есть способ попроще, возможно даже быстрее в скорости работы. Берём все пары [0-9\,\-]{2} и строим по ним хэш-таблицу, или те же самые ифы-свичи. Таким образом мы отказались от мутных складываний, а если использовали хэш-таблицу это ещё и быстрее будет. То есть в результате у нас будет отображение пар небольшого алфавита в байт.

Что-то мы естественно потеряем - мощность алфавита не кратна двойке - так что если требуется минимизировать трафик, возможно стоит сразу поточно жать в gzip, без предварительных манипуляций.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@vilgeforce
Раздолбай и программист
base64 + опционально GZIP. На сжатие данных я бы не заморачивался при 12 байтах.
Ответ написан
Комментировать
@onepavel
Консультация и разработка мобильных приложений
Закодировать цифры в символы, создайте массив из 12 символов, цифры 0-9 будут индексами массива, ну и минус с запятой туда же. А шифровать на js от хакера, на мой взгляд, бесполезно. Кто захочет, тот любой обфусцированный код разберет. а для пользователей может будет достаточно xor сделать.
Ответ написан
cyber-jet
@cyber-jet
md5, SHA-2 хеш, не?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы