Перейти к содержанию
VikDemak

Дарю алгоритм отображения информации

Recommended Posts

VikDemak

Алфавит - перечень символов, встречающихся в текстах. Каждый символ в алфавите встречается только один раз. Алфавит содержит не только прописные и строчные буквы, но символы знаков препинания, пробел, символы перевода каретки, символы новой строки и т.п. Каждый символ в алфавите имеет адрес, который изменяется от 1 - первый слева символ в алфавите, до N - последний слева символ в алфавите.

Рассмотрим пример.

Пусть имеем два слова: Путин, Медведев. В этих словах имеются следующие символы: П, у, т, и, н, М, е, д, в. Этот набор символов называется собственным алфавитом слов Путин и Медведев.

Задача: Найти алгоритм отображения слова Путин через слово Медведев и алгоритм восстановления слова Путин из слова Медведев.

Решение: Возьмем алфавит, состоящий из всех символов русского и английского языка, знаков препинания, пробела. Всего 190 символов, т.е. N = 190. Порядок символов в алфавите - случайный.

Запишем собственный алфавит в следующем виде:

17=П, 100=у, 34=т, 35=и, 144=н, 190=М, 88=е, 66=д, 1=в

П, у, т, и, н, М, е, д, в

В первой строке указаны адреса символов собственного алфавита в общем алфавите. Во второй строке указан собственный алфавит.

Для преобразования буквы "П" в букву "М" сравним адреса букв "П" и "М". Это числа 17 и 190. Для отображения буквы "П" через букву "М" необходимо к числу 17 прибавить число 190-17=173 и по адресу 190 считать букву "М". Число 173 запишем в вектор на первое место, так как это число отображает первые буквы.

Для отображения буквы "у" через букву "е" сравним адреса букв "у" и "е". Это числа 100 и 88. Для отображения буквы "у" через букву "е" необходимо к числу 100 прибавить неизвестное число x, такое чтобы получилось число 88. Решаем уравнение 100 + x = 88, отсюда x = -12. Наша задача получить все положительные числа для отображения. Поскольку, у нас получилось -12 < 1, то прибавим к нему количество чисел в алфавите -12 + 190 = 178. Таким образом, второе число отображающее букву "у" в букву "е" будет равно 178. Это число мы запишем на второе место в вектор 173, 178. Адрес буквы "е" вычисляется следующим образом: 100 + 178 - 190 = 88.

Для отображения буквы "т" через букву "д" сравним адреса букв "т" и "д". Это числа 34 и 66. Для отображения буквы "т" через букву "д" необходимо к числу 34 прибавить неизвестное число x, такое чтобы получилось число 66. Решаем уравнение 34 + x = 66, отсюда x = 32. Таким образом, третье число отображающее букву "т" в букву "д" будет равно 32. Это число мы запишем на третье место в вектор 173, 178, 32. Адрес буквы "д" вычисляется следующим образом: 34+32= 66.

Для отображения буквы "и" через букву "в" сравним адреса букв "и" и "в". Это числа 35 и 1. Для отображения буквы "и" через букву "в" необходимо к числу 35 прибавить неизвестное число x, такое чтобы получилось число 1. Решаем уравнение 35 + x = 1, отсюда x = -34. Наша задача получить все положительные числа для отображения. Поскольку, у нас получилось -34 < 1, то прибавим к нему количество чисел в алфавите -34 + 190 = 156. Таким образом, четвертое число отображающее букву "и" в букву "в" будет равно 156. Это число мы запишем на четвертое место в вектор 173, 178, 32, 156. Адрес буквы "в" вычисляется следующим образом: 35 + 156 - 190 = 1.

Для отображения буквы "н" через букву "е" сравним адреса букв "н" и "е". Это числа 144 и 88. Для отображения буквы "н" через букву "е" необходимо к числу 144 прибавить неизвестное число x, такое чтобы получилось число 88. Решаем уравнение 144 + x = 88, отсюда x = -56. Наша задача получить все положительные числа для отображения. Поскольку, у нас получилось -56 < 1, то прибавим к нему количество чисел в алфавите -56 + 190 = 134. Таким образом, пятое число отображающее букву "н" в букву "е" будет равно 134. Это число мы запишем на пятое место в вектор 173, 178, 32, 156, 134. Адрес буквы "е" вычисляется следующим образом: 144 + 134 - 190 = 88.

Предположим, что нам известно слово Медведев, алфавит и вектор чисел 173, 178, 32, 156, 134. Посмотрим, что получится при восстановлении.

Находим адрес буквы "М" (первой буквы в слове Медведев) в алфавите. Это число 190. Поскольку при отображении мы прибавляли неизвестное число, то при восстановлении необходимо вычитать числа вектора. Вычтем из числа 190 первое число вектора 190 - 173 = 17. Поскольку число положительное, то по адресу 17 в алфавите находим букву "П". Первая буква восстановлена.

Находим адрес буквы "е" (второй буквы в слове Медведев) в алфавите. Это число 88. Поскольку при отображении мы прибавляли неизвестное число, то при восстановлении необходимо вычитать числа вектора. Вычтем из числа 88 второе число вектора 88 - 178 = -90. Поскольку число меньше 1, то необходимо прибавить число N=190. Получим -90 + 190 = 100. По адресу 100 в алфавите находим букву "у". Вторая буква восстановлена. Всего восстановлено "Пу".

Находим адрес буквы "д" (третьей буквы в слове Медведев) в алфавите. Это число 66. Поскольку при отображении мы прибавляли неизвестное число, то при восстановлении необходимо вычитать числа вектора. Вычтем из числа 66 третье число вектора 66 - 32 = 34. По адресу 34 в алфавите находим букву "т". Третья буква восстановлена. Всего восстановлено "Пут".

Находим адрес буквы "в" (четвертой буквы в слове Медведев) в алфавите. Это число 1. Поскольку при отображении мы прибавляли неизвестное число, то при восстановлении необходимо вычитать числа вектора. Вычтем из числа 1 четвертое число вектора 1 - 156 = -155. Поскольку число меньше 1, то необходимо прибавить число N=190. Получим -155 + 190 = 35. По адресу 35 в алфавите находим букву "и". Четвертая буква восстановлена. Всего восстановлено "Пути".

Находим адрес буквы "е" (пятой буквы в слове Медведев) в алфавите. Это число 88. Поскольку при отображении мы прибавляли неизвестное число, то при восстановлении необходимо вычитать числа вектора. Вычтем из числа 88 пятое число вектора 88 - 134 = -46. Поскольку число меньше 1, то необходимо прибавить число N=190. Получим -46 + 190 = 144. По адресу 144 в алфавите находим букву "н". Пятая буква восстановлена. Всего восстановлено "Путин".

Числа в векторе использованы все, следовательно восстановление завершено. Количество чисел в векторе равно длине восстанавливаемой информации.

Если бы первое слово было больше второго, то при достижении конца слова при отображении, необходимо перейти к первому символу. Таким образом, осуществляется отображение через один единственный символ.

САМОЕ ВАЖНОЕ: адреса в алфавите должны начинаться с 1.

Поскольку на элементы алфавита никаких ограничений не накладывается, то в качестве элементов алфавита могут выступать байты, произвольные тексты, слова и т.п.

Можно использовать не один алфавит, а два и более.

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

Этот алгоритм опубликован в 2009 г.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
VikDemak
Алфавит - перечень символов, встречающихся в текстах. Каждый символ в алфавите встречается только один раз. Алфавит содержит не только прописные и строчные буквы, но символы знаков препинания, пробел, символы перевода каретки, символы новой строки и т.п. Каждый символ в алфавите имеет адрес, который изменяется от 1 - первый слева символ в алфавите, до N - последний слева символ в алфавите.

Рассмотрим пример.

Этот алгоритм опубликован в 2009 г.

Это нужно вот для чего:

Новый способ хранения персональных данных

В базе данных персональные данные должны сохраняться в следующем виде:

1) Вымышленные персональные данные, которые по внешнему виду не отличимы от действительных персональных данных. Например, реальная фамилия Петров может храниться в виде фамилии Медведевский или Obama или любой другой. Размер реальной фамилии и размер вымышленной фамилии между собой никак не связаны.

2) Набор целых чисел от 1 до 65535 в количестве, равному размеру реальных персональных данных. Например, для фамилии Петров - это 6 чисел, так как в фамилии Петров 6 букв, примерно таких: 111, 75, 71, 29, 100, 211.

Больше ничего в базе данных не должно сохраняться.

Для восстановления реальных данных из вымышленных необходимо в оперативной памяти компьютера хранить алфавит - перечень символов, используемых для отображения персональных данных. Максимум - это 65535 символов в кодировке Unicode. Порядок следования символов в алфавите имеет первостепенное значение. Набор чисел в приведенном выше примере для фамилии Петров - это связь между адресами букв реальной фамилии Петров в алфавите и адресами букв вымышленной фамилии Медведевский в алфавите. Алфавит отличается от шрифта тем, что символы в алфавите различаются только по коду и порядок следования символов произвольный. Начертания символов не имеет никакого значения для алфавита. В шрифте начертания символов имеет первостепенное значение и порядок следования символов единственный.

Адреса букв в алфавите и реальные буквы между собой никак не связаны.

Если хакеры украдут из базы данных вымышленную фамилию Медведевский или Obama и украдут набор чисел 111, 75, 71, 29, 100, 211, то восстановить реальную фамилию Петров не смогут, так как отсутствует алфавит. А украсть алфавит из оперативной памяти практически невозможно.

Если изменить в алфавите порядок следования символов, то это будет уже другой набор чисел для фамилии Петров. Можно время от времени изменять алфавит и заменять наборы чисел в базе данных для персональных данных. Вымышленные персональные данные можно не изменять.

Как видите, украсть персональные данные невозможно, так как их попросту нет. Кража вымышленных персональных данных в этом случае бессмысленна. Под персональными данными мы понимаем в том числе пароли, логины, аккаунты и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Сергей Ильин

VikDemak, метод изобретательный, по сути это шифрование с ключем в виде алфавита. В связи с этим вопрос. Зачем применять этот метод, если можно просто зашифровать данные стойким и проверенным алгоритмом? В чем выигрыш вашего метода?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  • Сообщения

    • Ego Dekker
      Домашние антивирусы для Windows были обновлены до версии 17.2.8.
    • demkd
    • santy
      demkd, а где сохраняется информация о количестве используемых ядер? в settings.ini? Не увидел там новый параметр при изменения параметра производительности в доп. настройках.
    • demkd
      ---------------------------------------------------------
       4.99.1
      ---------------------------------------------------------
       o Это обновление добавляет поддержку многоядерных процессоров.

       o В меню Настройки->Дополнительные настройки добавлена возможность указать количество рабочих потоков
         для функций:
           o Создание файла сверки                                        (нельзя прервать)
           o Создание образа автозапуска                                  (нельзя прервать)
           o Загрузка производителя [F3]                                  (доступно прерывание функции по ESC)
           o Проверка по базе проверенных файлов [F4]                     (доступно прерывание функции по ESC)
           o Проверка ЭЦП [F6]                                            (доступно прерывание функции по ESC)
           o Проверка по базе критериев [Alt+F7]                          (доступно прерывание функции по ESC)
           o Фильтрация по базе критериев [Ctrl+F7]                       (доступно прерывание функции по ESC)
           o Проверка списка по выбранному критерию                       (доступно прерывание функции по ESC)
           o Проверить весь список на вирусы                              (доступно прерывание функции по ESC)
           o Добавить хэши всех проверенных файлов в базу проверенных     (доступно прерывание функции по ESC)
           o Добавить хэши исполняемых файлов каталога в базу проверенных (доступно прерывание функции по ESC)
         Значение 0 задает количество потоков равным количеству ядер процессора (включая виртуальные), виртуальные ядра
         могут ускорить процесс на лишние 30%.
         Как сказывается использование E-ядер неизвестно, но скорее всего ощутимой разницы с P ядрами не будет,
         поэтому на новых интелах + NVME SSD сокращение времени исполнения функций скорее всего будет огромным.
         При подключении к удаленной системе для серверной части uVS количество потоков всегда равно количеству ядер (включая виртуальные).
         Для клиентской части действует заданное в настройках значение.
         Для системного диска на базе SSD время выполнение функции уменьшается многократно (для 4-х ядерных процессоров вплоть до 4x на SATA SDD),
         для современных конфигов может иметь смысл задание большего числа потоков чем количество ядер у процессора (допустимый максимум - 128).
         Для HDD все гораздо хуже, время проверки немного сокращается (10-20%), однако когда часть файлов находится
         в кэше системы (т.е. в оперативной памяти) разница будет существенной и для HDD.
         Конечно все это верно лишь для процессоров с более чем 1 ядром.
         (!) Прерывание функции по клавише ESC недоступно для удаленных систем.

       o Другие функции, которые можно прервать по ESC:
         o Проверить все НЕПРОВЕРЕННЫЕ файлы на VirusTotal.com
         o Проверить все НЕПРОВЕРЕННЫЕ ИЗВЕСТНЫЕ файлы на VirusTotal.com
         o Проверить НЕПРОВЕРЕННЫЕ файлы в текущей категории на VirusTotal.com (c учетом фильтра)
         o Проверить все НЕПРОВЕРЕННЫЕ файлы на virusscan.Jotti.org
         o Проверить все НЕПРОВЕРЕННЫЕ ИЗВЕСТНЫЕ файлы на virusscan.Jotti.org
         o Проверить НЕПРОВЕРЕННЫЕ файлы в текущей категории на virusscan.Jotti.org (с учетом фильтра)
         o Проверить хэш файла по базе проверенных файлов
         o Добавить в список->Все исполняемые файлы в системных каталогах не старше указанной даты

       o Обновлен функционал окна "История процессов и задач".
         Добавлена информация о текущем состоянии задач зарегистрированных в системном планировщике заданий.
         Добавлена новая кнопка "С момента запуска системы", которая переключает режим отображения истории.
         Если кнопка нажата то история отображается только с момента запуска системы, все что было раньше не попадает в список.
         Если кнопка отжата то отображается вся доступная история процессов и задач,
         что может быть полезно для выявления зловредной активности непосредственно перед перезагрузкой системы.
         Для каждой задачи по двойному щелчку левой кнопки мыши можно просмотреть XML описание задачи.
         Теперь фильтрующий поиск работает на все колонки активного списка одновременно, поддерживается
         фильтрация и списка процессов и списка задач, в зависимости от того какой список активен.
         Фильтрующий поиск применяется на результат работы родительского фильтра.
         Горячая клавиша Backspace больше не влияет на родительский фильтр, для отката уровня родительского
         фильтра используйте клавиши ESC (если строковый фильтр пуст) или Alt+Up (откат со сбросом строкового фильтра).
         (см. подробнее в файле Doc\История процессов и задач.txt)
         (!) Только для Vista и старше.
         (!) Только для активных и удаленных систем.

       o Включение отслеживания процессов и задач теперь увеличивает системный журнал до 50mb,
         отключение возвращает размер по умолчанию.

       o Новая скриптовая команда: deltskname полное_имя_задачи
         Удалить задачу с указанным именем.
         Имя задачи должно начинаться с символа "\", например: \Task
         Допустимо указывать каталоги например: \Microsoft\Задача
         (!) Только для Vista и старше.

       o Возвращено отображение цифровых процентов в заголовке окна, поскольку в некоторых системах графическое отображение
         прогресса выглядит не очень наглядно.

       o В окно выбора каталога/файла добавлен фильтрующий поиск (по обоим спискам одновременно если это выбор файла).
         В окне изменились горячие клавиши:
          o \ - перейти к выбору диска
          o DEL - удалить каталог/файл (с подтверждением)
          o ESC - очистить фильтр, если фильтр пуст то закрыть окно.   
          o Backspace - удалить последний символ фильтра
          o Alt+Вверх - перейти в родительский каталог

       o Функция создания образа автозапуска теперь не использует базы проверенных файлов и все проверенные файлы ДО создания
         образа теряют статус "проверенный". Т.е. в образе статус проверенный имеют лишь файлы прошедшие проверку ЭЦП.

       o Поскольку AutoHotkey используется зловредами то теперь все его актуальные версии выявляются под любым именем по F3 или
         при создании образа автозапуска и получают статус подозрительного файла.
         Соответствующие имени файла скрипты автозапуска добавляются в список автоматически и тоже получают статус подозрительных файлов.
         Содержимое скрипта доступно в окне информации ahk файла.

       o Введены новы лимиты на количество элементов в списке автозапуска для x64 версий в списке может быть до 1 млн. файлов,
         для x86 до 150 тысяч файлов. (Обычно в образе менее 10 тысяч файлов)

       o Оптимизированы функции сортировки, фильтрации и вывода списка.

       o В категории HOSTS добавлен фильтрующий поиск по 2 первым колонкам одновременно.
         Сортировки в этой категории нет, записи представлены в порядке следования в оригинальных файлах.
         Первыми идут записи из HOSTS, что лежит по прописанному в реестре пути, если путь отличается от пути по умолчанию
         то дальше идут записи HOSTS из \Windows\System32\drivers\etc, далее записи из HOSTS.ICS.
         В этой категории теперь работает горячая клавиша DEL.

       o Найдена ошибка в Windows API из-за которой для некоторых файлов не отображался производитель и другая информация о версии файла.
         Сам Windows для таких файлов не отображает случайные параметры на вкладке "Подробно" в свойствах файла.
         Ошибку удалось обойти и теперь в окне информации о файле отображаются все значимые параметры для всех исполняемых файлов.

       o Улучшен альтернативный режим сканирования процессов. (ctrl+p)

       o В контекстное меню окна информации о файле добавлен поиск по имени подписавшего файл.

       o Удалена скриптовая команда EXEC32 за бесполезностью.

       o Из настроек основного списка удален обычный поиск за бесполезностью.

       o Добавлен вывод предупреждения в лог при обнаружении вируса в списке при загрузке производителя и сигнатур про F3.

       o Исправлена и улучшена функция вывода результата исполнения консольных приложений.
         Теперь вывод осуществляется в реальном времени с поддержкой отображения динамического текста в последней строке.
         Проблема с кодировкой для старых систем решена.
         Добавлено время выполнения приложения.

       o Результат выполнения команды gpudpate теперь отображается в логе.

       o Сообщение об отсутствии пользовательского реестра в каталоге "All users"/ProgramData больше не выводится.

       o Немного дополнена документация.

       o Исправлена ошибка из-за которой вместо обычной x64 версии для старых систем запускалась x64v версия.

       o Исправлено ошибочное сообщение в логе при исполнении 44 твика.

       o Исправлена ошибка при сохранении истории задач в образ и при передаче данных из удаленной системы.

       o Исправлена и оптимизирована функция проверки списка по выбранному критерию.

       o Исправлена ошибка с растущим временем отката операции по Ctrl+Z при работе с образом.

       o Исправлена ошибка при определении параметров *OperatingSystemVersion для 64-х битного исполняемого файла.

       o Исправлена ошибка с неправильным откатом операции по HOSTS при работе с образом.

       o Исправлена ошибка подписи образа автозапуска удаленной системы (появилась в v4.15.4)

       o Исправлена функция Добавить в список->Все исполняемые файлы в системных каталогах не старше указанной даты

       o Исправлены мелкие интерфейсные ошибки.
       
    • PR55.RP55
      Предлагаю добавить удаление по критерию поиска. На примере темы: https://forum.kasperskyclub.ru/topic/463829-ne-poluchaetsja-udalit-virus/ т.е. у нас есть переменные и постоянные... данные. На основе постоянных данных создаётся критерий поиска и скрипт по нему отработает. В принципе  можно пользователю кинуть поисковый критерий в виде файла > Прогнать список по поиску > Удалить найденное. Но как это всё объяснять.
×