Index · Правила · Поиск· Группы · Регистрация · Личные сообщения· Вход

Список разделов Компьютерная безопасность, коды, доступы и т.д.
 
 
 

Раздел: Компьютерная безопасность, коды, доступы и т.д. Необходим алгоритм сжатия 

Создана: 05 Апреля 2011 Втр 11:33:44.
Раздел: "Компьютерная безопасность, коды, доступы и т.д."
Сообщений в теме: 27, просмотров: 9577

На страницу: Назад  1, 2  Вперёд
  1. taurus_xxl


    Завсегдатай


    Более 10 лет на форуме
    05 Апреля 2011 Втр 11:33:44
    Есть такая задача: строка символов длиной от 6 до 32 знаков, может состоять из букв a-z, цифр 0-9 и трех знаков -._(тире, нижний подчерк и точка). Необходимо перевести эту строку в числовую, то есть типа 096583932047 и максимально ее сжать по длине, но чтобы потом можно было обратными действиями восстановить начальную строку. Кто нибудь подскажет каким образом это возможно сделать?
  2. taurus_xxl


    Завсегдатай


    Более 10 лет на форуме
    06 Апреля 2011 Срд 11:54:20
    Кто поможет мне с этой идеей тот получит возможность совершать звонки скайп<->мтс омск совершенно бесплатно (срок обговорим)
  3. subver


    Частый гость


    Более 10 лет на форумеМуж.
    06 Апреля 2011 Срд 12:40:25
    ну тогда как и говорили - ужать каждый символ до 6 бит и закодировать.
    но тогда получится на каждый байт нужно будет вводить 2-3 цифры с клавиатуры телефона.

    Еще дурацкий вариант - закодировать каждый символ 2мя цифрами - клавиша телефона и сколько раз ее нажать надо чтобы получился нужный символ (буквы которые под цифрами на тел. написаны), может получится и покороче.
  4. taurus_xxl


    Завсегдатай


    Более 10 лет на форуме
    06 Апреля 2011 Срд 13:12:16
    subver писал : ну тогда как и говорили - ужать каждый символ до 6 бит и закодировать.
    но тогда получится на каждый байт нужно будет вводить 2-3 цифры с клавиатуры телефона.

    Подробней можно? или ссылку
  5. subver


    Частый гость


    Более 10 лет на форумеМуж.
    06 Апреля 2011 Срд 13:25:12
    taurus_xxl писал(а) :
    Подробней можно? или ссылку

    каждый символ нумеруется от 0 до 38, чтобы их закодировать в двочиной системе, нужно 6 бит на каждый символ, выстраиваем эти биты подряд и "нарезаем" по 8 - и эти байты кодируем.
    Но это все хорошо, когда требуется получить бинарный поток.

    Здесь же вам нужно фактически представить 39 различных символов алфавитом из 12 символов (кнопки на телефоне). В связи с этим пришла в голову такая идея:

    9 наиболее часто используемых символов закодировать одной кнопкой телефона (0-8 например), а остальные - двумя нажатиями ("9","*","#" + еще какие то кнопки.) - фактически это некоторая адаптация алгоритма Хаффмана с фиксированным деревом.

    Для раскодировки смотрим символ в строке - если это символ из диапазона "0-8" - то берем из таблицы букву соответствующую, если "9" или "*" или "#" - то смотрим следующий символ и по нему берем так же букву из таблицы.

    P.S. - можно в принципе построить и полный алгоритм Хаффмана с использованием 12 кнопок, но не факт что полная реализация даст существенно большее сжатие.

    Для построения частоты использования букв самое шикарное - это нарыть базу логинов, на худой конец - можно просто словарь какой нибудь проанализировать )
  6. 13 Апреля 2011 Срд 12:51:51
    Вот что высчитал с мощью математики и php:
    для кодирования 1 символа из логина скайпа(a-z0-9*-_) необходимо где-то от 1.52 до 1.71 символов набранных на телефоне(0-9*#)

    Откуда я взял от 1.52 до 1.71 ?
    Я высчитал кол-во возможных значение логина скайпа длиной N символов и количество длины полученного кода из (0-9*#), необходимого для набора этого лоигина длиной N символов, сохраняя уникальность (без потерь).

    Получается такая таблица:
    Длина логина скайпа - кол-во символов набранных, на телефоне
    6 -10
    7 - 12
    8 -13
    9 - 15
    10 - 16
    32 - 49


    Написал функцию на php работает Very Happy , только есть проблема:
    Там слишком большие числа и нужно использовать специальные функции.


    Сделял я так:
    Для логина скайпа у нас 39 символов (a-z0-9*-_). Создал таблицу символов, в которой каждому символу я присвоил десятичный номер от 11 до 49

    Алгоритм функции перевода логина скайпа в символы набора на телефоне:
    1) Перевожу логин в последовательность чисел, используя вышеупомянутую таблицу символов. Получается десятичное число.

    2)Перевожу полученное десятичное число в двенадцатеричное.
    Алгоритм перевода такой же как и с шестнадцатеричным. Только делим вместо 16 на 12; Т.к. цифр тут 12 то буквы c, d, e, f не нужны, а вместо буквы a - ставлю *, вместо b - #

    Обратная функция перевода работает соответственно в порядке наоборот.


    И еще насчет сжатия.
    Т.к. логинов скайпа меньше 6 символов нет:
    Возможно после получения десятичного числа его можно уменшить в размере, используя например деление, или еще какую арифметическую функцию.

    Но пока этого не придумал. Для этого нужно учесть то, что всегда должно получится уникальное число (без потерь и колизий).
  7. Teruro


    Хранитель


    Более 10 лет на форумеУчастнику дано предупреждение от модератораМуж.
    13 Апреля 2011 Срд 16:27:31
    taurus_xxl писал(а) ? ? ? : Есть такая задача...

    Существует два больших класса алгоритмов сжатия без потерь:
    1. частотные алгоритмы, использующие разницу в частоте символов и кодирующие более часто встречающиеся символы меньшим количеством битов;
    2. алгоритмы замены повторяющихся последовательностей.
    Второй вид алгоритмов на коротких строках текста выигрыша не дают. Поэтому логично использовать первый вид алгоритмов.
    Среди частотных алгоритмов наилучшие - хафмэн и арифметическое кодирование.
    Арифметическое кодирование даёт лучший результат, только
    а) нужно правильно его написать,
    б) реализации наврняка будут нарушать пару-тройку патентов IBM.

    Если взять в качестве словаря ((a-z),(0-9),{._-}) и в качестве результирующего словаря ((0-9),{#*}), то, например слово 'abrakadabra' будет закодировано словом 000801142222928. Неоптимизированный алгоритм видел в журнале "Мир ПК" за примерно 1993 год, но думаю лучше поискать в интернете.
  8. taurus_xxl


    Завсегдатай


    Более 10 лет на форуме
    13 Апреля 2011 Срд 20:43:24
    Неужели нету уже готового алгоритма? Я не верю что мне первому он понадобился. Спасибо за ваши предложения/высказывания, буду думать (хотя наврядли сам что то надумаю).
  9. SABOTEUR


    Хранитель


    Более 10 лет на форумеБан, запрет писать в публичных разделах форумаМуж.
    13 Апреля 2011 Срд 22:28:43
    Сотрудниками отдела «К» ГУВД по Свердловской области пресечена деятельность организованной преступной группы, создавшей нелегальный канал связи для осуществления международных телефонных звонков в Китай и междугородных звонков по России. Ущерб от действий злоумышленников составил более 10 млн. рублей.

    Преступный замысел возник еще в 2007 году. Организатор, гражданин Китая, обратился к двум квалифицированным российским специалистам с просьбой о создании канала связи для осуществления международных телефонных звонков в Китай. Для этого он приобрел специальное оборудование, позволяющее преобразовывать звонок с мобильного телефона в Интернет - трафик и посредством глобальной сети отравлять его в любую точку мира, где работает подобное устройство. Аналогичное оборудование было установлено в Китае, куда в дальнейшем и выехал предприимчивый китаец для приема входящего трафика.

    Для получения услуги необходимо было приобрести карту оплаты, на которой указывалось несколько телефонов и подробная инструкция. Желающие позвонить набирали один из номеров и следовали инструкциям автоответчика на китайском языке для соединения с нужным абонентом. После окончания телефонного соединения происходила тарификация звонка и списание денежных средств. Стоимость телефонного звонка составляла всего 1,5 рубля за минуту.

    Организацией торговой сети по сбыту карт оплаты среди граждан Китая, находящихся на территории Свердловской области, занялась подруга организатора, в обязанности которой входила оплата телефонных счетов сотовых компаний, учет проданных карт оплаты и распределение прибыли среди других участников ОПГ.

    В результате проведенных обысков на «узле связи» и по адресам проживания подозреваемых обнаружены и изъяты: программно-аппаратный комплекс, позволяющий оказывать услугу ip-телефонии; более одной тысячи сим-карт, договоры об оказании услуг связи, специальное устройство, позволяющее использовать сим-карты операторов сотовой связи в качестве шлюза для доступа в Интернет; договоры на производство карт оплаты, бумажные записи о ведении учета денежных средств, поступающих от преступной деятельности.

    По данному факту СЧ ГСУ при ГУВД по Свердловской области возбуждено уголовное дело по признакам состава преступления, предусматривающего ответственность по ч.2 ст.171 УК РФ (незаконное предпринимательство). Трое участников ОПГ задержаны, им предъявлено обвинение в совершении преступления.

    Пресс-служба Управления «К» МВД России
  10. taurus_xxl


    Завсегдатай


    Более 10 лет на форуме
    14 Апреля 2011 Чтв 8:19:16
    SABOTEUR писал : Сотрудниками отдела «К» ГУВД по Свердловской области ...

    А где тут про сжатие и шифрование?Смайлик :-)
    P.S. Я никакой коммерческой деятельности не веду, соответственно и не ухожу от налогов, и никакие карты оплпты не произвожу.
  11. Teruro


    Хранитель


    Более 10 лет на форумеУчастнику дано предупреждение от модератораМуж.
    14 Апреля 2011 Чтв 15:16:18
    taurus_xxl писал(а) : Неужели нету уже готового алгоритма?

    Наверняка где-то есть. Я "на коленке" сваял.
    Кстати, в прошлом письме я немного ошибся. Результат адаптивного алгоритма с весовыми коэффициентами 1 и приращением 1 даст 00288#*61162*15.
    Но не слишком ли много цифр получается?
    И ещё один момент: код не будет полностью однозначным - если вместо последней 5 поставить 4 или 6, алгоритм раскодировки даст то же самое слово.
    И ещё в начало нужно одну-две цифры добавить под длину слова.
  12. SABOTEUR


    Хранитель


    Более 10 лет на форумеБан, запрет писать в публичных разделах форумаМуж.
    14 Апреля 2011 Чтв 19:17:27
    taurus_xxl писал(а) :
    P.S. Я никакой коммерческой деятельности не веду, соответственно и не ухожу от налогов, и никакие карты оплпты не произвожу.
    да братан конечно .... не вопрос....

    taurus_xxl писал(а) : Я на своей АТС хочу сделать звонки с мобильных на Skype. С клавиатуры мобильника невозможно набрать логин скайпа, поэтому необходимо что то типа калькулятора, в который вводишь логин скайпа а он выдает числовую последовательность. Человек дозванивается на номер шлюза и вводит эту последовательность, моя атс ее декодирует и соединяет с нужным абонентом скайпа.



    taurus_xxl писал(а) :Кто поможет мне с этой идеей тот получит возможность совершать звонки скайп<->мтс омск совершенно бесплатно (срок обговорим)



    срок с вами следователь обговорит,особенно если трафик через мтс пойдет.Китайцы вот тоже думали...впрочем не только китайцы.
    я собственно ниче не понял ! вы когда врали? в начале или сейчас?
  13. taurus_xxl


    Завсегдатай


    Более 10 лет на форуме
    15 Апреля 2011 Птн 0:10:27
    SABOTEUR писал ? ? :
    я собственно ниче не понял ! ...

    вот и хорошо, вам и не надо ничего понимать, просто проходите мимо, эта тема не для флуда. И правила форума почитайте на досуге.
На страницу: Назад  1, 2  Вперёд