топологический ключ
Почитали про кодирование. Наблюдается алгебра. разнообразная.
Топология отсутствует.
У меня есть кубик Рубика спутанный. Клиенту по почте посылаем другой спутанный кубик_пластиковый. Теперь чтобы задать "язык" текущей едИнственной сессии нужно передать может быть несколько цифр. Может даже одну.
После разговора он посылает нам другую цифру и мой кубик снова спутан.
Кубик-рубик это топологическое пространство.
"Кубик" может быть сколько угодно сложным. Он может не быть кубиком. Или быть многомерным.
Технологии открЫтой передачи "кубика" по сЕти – об этом дУмать надо – они Есть.
Кубик – это программа. На обычных С-подобных языках такие структуры невыносимо сложны. Есть альтернатива. Я зык Постскрипт(PostScript). Реализация динамической структуры любой сложности на нём тривиальна. Навскидку кубик-рубик со стороной 3 для такой задачи будет менее 10 килобайт чистой программы, интерпретируемого кода.
Это всё.
Думаем.
комментариев: 11558 документов: 1036 редакций: 4118
Каков алгоритм?
однако проблема передачи ключа! Остается...
Вот, по моему, в чем состоит идея "кубика Рубика":
Записать информацию по байтам на поверхность куба со стороной N,
затем применить "повороты" как в "Кубике-Рубика"
кодирование идет на внешних плоскостях куба,
кол-во квадратиков(блок кодирования) для этого состовляет S=6*N^2;
Для этого требуется K кубиков K=N^3-(N-2)^3=4(N^2-2N+2)
из них:
8- (U) угловых (3стороны),
12(N-2) – ® рёберных (2стороны) и
6(N-2)^2 – § плоских.
Сравнительная таблица
N 3 4 5 6 7 8
S 54 96 150 216 294 384
R 12 24 36 48 60 72
P 6 24 54 96 150 216
U 8 8 8 8 8 8
К 26 56 98 152 218 296
N^3 27 64 125 216 343 512
Запись Букв (байт) идет по порядку на плоскости!
Нумерация плоскостей – 1,2,3 по часовой плоскости
4 – напротив 3-ей, 5-ая напротив 2ой, 6 – 1;
Для куба со стороной, состоящей из N кубиков
Операций всего 2 * N – Вращение по часовой стрелке на 90 градусов
· i раз Горизонтальное (iGn) – n-ой плоскости, отсчет от 2ой к 5ой
· i раз Вертикальной (iVm)– m-ой плоскости, отсчет от 3ей к 4ой
Значение i может приминать только 1(01),2(10),3(11); 0 – нет сдвига
то есть требуется всего – 2 бита! На одну операцию!
Горизонтальный и вертикальный (G или V) поворот можно чередовать!
Тогда:
Шифрование (Ключ) – это J операций по вращению;
Расшифрование (Это Обратный Ключ)
Для 1Gn – обратное 3Gn; 2Gn – 2Gn;
Пример:
Шифрование (Ключ): 2G1,1V2, 3G1, 2V1 – 2байта шифрования! (1001,0110),(1101,1001)
Расшифрование 2V1,1G1,3V2,2G1 – 2байта (1001,0101),(1110,1001)
Перестановочное кодирование!
Для блока из S байт существует S! Комбинаций.
поэтому даже для N=3, S=54 существует 2.3 E 71 комбинаций
– «стойкость обеспечена» !
Кроме того, информацию можно «натягивать» на кубики разного размера,
например, на куб со стороной 7х7 – тогда 2 байта на одну операцию!
Это Хуже...т.к. используется одна операция кодирования вместо 4х
Операций – 3N:
G – Горизонтальные, L – Левые и R – правые
В расшифровочном ключе используется вместо 1 -3 и наоборот,
Операции идут в обратном порядке:
Тогда для "Кубика Рубика" – куб со стороной 3х3 ключ состоит из 3*M байт
так, можно сделать ключ в 2Кбайта (2094 байта = 698*3 операций ! )
Ключ:
2L1,1G2, 3R1, 2L1,3G3,1R2 – (1001,0110) LG,(1101,1001) RL(1111,0110) GR …
Расшифрование идет по схеме
3R2,1G3, 2L1, 1R1,3G2,2L1 – (1110,0111) RG(1001,0101) LR(1110,1001) GL
Проблему ключей это не решает!
однако шифрование – достаточно интересное...
комментариев: 11558 документов: 1036 редакций: 4118
Оценивать предметно пока не берусь — на это время нужно.