|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.02.2014, 16:08 | #1 |
Регистрация: 24.02.2014
Сообщений: 4
|
Оцените новый алгоритм отображения информации
Алфавит - перечень символов, встречающихся в текстах. Каждый символ в алфавите встречается только один раз. Алфавит содержит не только прописные и строчные буквы, но символы знаков препинания, пробел, символы перевода каретки, символы новой строки и т.п. Каждый символ в алфавите имеет адрес, который изменяется от 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. И т.д. Предположим, что нам известно слово Медведев, алфавит и вектор чисел 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. Поскольку на элементы алфавита никаких ограничений не накладывается, то в качестве элементов алфавита могут выступать байты, произвольные тексты, слова и т.п. Можно использовать не один алфавит, а два и более. Необходимым и достаточным условием для отображения произвольного текста через другой произвольный текст: Алфавит должен содержать собственный алфавит. Поскольку числа вектора зависят только от порядка следования символов в алфавите и не зависят от самих символов, то существует целый класс, равный факториалу от N, отображения одной и той же информации через другую одну и ту же информацию. Этот алгоритм опубликован в 2009 г. |
26.02.2014, 18:38 | #2 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
Ничего особо интересного, лишь бесполезные сложности. Для восстановления сообщения необходимо знание не только ключа, но и алфавита. Поскольку используется только замена без бленда и перестановок, то вероятнее всего при увеличении длины сообщения криптостойкость результата будет лишь падать.
|
27.02.2014, 15:54 | #3 |
Регистрация: 24.02.2014
Сообщений: 4
|
Это нужно вот для чего:
Новый способ хранения персональных данных В базе данных персональные данные должны сохраняться в следующем виде: 1) Вымышленные персональные данные, которые по внешнему виду не отличимы от действительных персональных данных. Например, реальная фамилия Петров может храниться в виде фамилии Медведевский или Obama или любой другой. Размер реальной фамилии и размер вымышленной фамилии между собой никак не связаны. 2) Набор целых чисел от 1 до 65535 в количестве, равному размеру реальных персональных данных. Например, для фамилии Петров - это 6 чисел, так как в фамилии Петров 6 букв, примерно таких: 111, 75, 71, 29, 100, 211. Больше ничего в базе данных не должно сохраняться. Для восстановления реальных данных из вымышленных необходимо в оперативной памяти компьютера хранить алфавит - перечень символов, используемых для отображения персональных данных. Максимум - это 65535 символов в кодировке Unicode. Порядок следования символов в алфавите имеет первостепенное значение. Набор чисел в приведенном выше примере для фамилии Петров - это связь между адресами букв реальной фамилии Петров в алфавите и адресами букв вымышленной фамилии Медведевский в алфавите. Алфавит отличается от шрифта тем, что символы в алфавите различаются только по коду и порядок следования символов произвольный. Начертания символов не имеет никакого значения для алфавита. В шрифте начертания символов имеет первостепенное значение и порядок следования символов единственный. Адреса букв в алфавите и реальные буквы между собой никак не связаны. Если хакеры украдут из базы данных вымышленную фамилию Медведевский или Obama и украдут набор чисел 111, 75, 71, 29, 100, 211, то восстановить реальную фамилию Петров не смогут, так как отсутствует алфавит. А украсть алфавит из оперативной памяти практически невозможно. Если изменить в алфавите порядок следования символов, то это будет уже другой набор чисел для фамилии Петров. Можно время от времени изменять алфавит и заменять наборы чисел в базе данных для персональных данных. Вымышленные персональные данные можно не изменять. Как видите, украсть персональные данные невозможно, так как их попросту нет. Кража вымышленных персональных данных в этом случае бессмысленна. Под персональными данными мы понимаем в том числе пароли, логины, аккаунты и т.п. |
27.02.2014, 22:35 | #4 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
ну, что называется, в добрый путь.
но, если я правильно понимаю, то все БД сегодня имеют опцию шифрования данных методами проверенными временем (DES, AES), поэтому сомневаюсь, что кто-нибудь решит прикрутить эту мурзилку к своей БД. |
13.10.2014, 10:39 | #5 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,547
|
Так и не понял, от куда в ОП берется алфавит? Задается заранее? Так если вдруг произойдет сбой, и комп перезагрузится, прощай вся БД?
E-Mail: arigato.freelance@gmail.com
|
13.10.2014, 12:03 | #6 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
не, вроде, не обязательно прощай.
если знаешь алфавит с которым была закодирована ДБ, то перед вводом пароля просто вводишь весь алфавит. вот такая фигня. |
13.10.2014, 13:42 | #7 |
Участник клуба
Регистрация: 23.04.2009
Сообщений: 1,058
|
Это несерьёзно , при краже стоит мне узнать пару реальных фамилий и ключ будет подобрать не сложно. Тем более если у меня хватило ума украсть базу, по взломать ваше ПО и посмотреть внутри ваш Алфавит забитый константой нет проблем.
Почитайте лучше про шифрование , хотя украсть ключ тоже можно. А так рекомендую создать закрытую (VPN) сеть для работы с БД. + ограничение по портам коннекта к серваку. Да и вообще кучу чего можно придумать чтоб свести риски почти к 0.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
|
13.10.2014, 15:31 | #8 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,547
|
Так это ломает всю идею ТС, он то говорит, что фишка в том, что алфавит только в ОП, его нет на диске. А если надо вбивать алфавит, то от куда он возьмется? Варианты с запоминанием алфавита сотрудниками не предлагать. То есть он должен быть записан еще где-то, кроме ОП, а значит его таки тоже можно стянуть как минимум из двух мест: ОП и еще где-то.
E-Mail: arigato.freelance@gmail.com
|
13.10.2014, 15:53 | #9 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
никогда бы не подумал. чудес не бывает.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кроссворд. Измененный алгоритм, оцените | Алексей_2012 | Общие вопросы Delphi | 14 | 28.01.2014 00:38 |
Мой новый Табличный сайт, Оцените Вёрстку ребят | psywalker | HTML и CSS | 9 | 23.12.2009 21:01 |
недостаточно оперативной памяти для отображения информации | VVlad69 | Microsoft Office Access | 0 | 02.04.2009 14:51 |