или

Как читать алфавитно-цифровой режим в Micro QR Code версии М4

(мифы и нереальности)

Встроенные в Micro QR Code технологии насыщенны мифами и нереальностями. Программисты моделисты часто добавляют артефакты и/или cookies в свои наработки, которые интересно находить при расшифровке кодов и алгоритмов. А затем и самому кодировать и декодировать практически любую информацию. Рассмотрим этапы расшифровки микрокодов самого старшего микроуровня – М4 формата алфавитно-цифрового кодирования на историческом примере.

Первый и, наверное, самый важный на фоне остальных мифов вопрос: почему максимальное количество смешанных символов для кодирования в микрокодах ровно 21 (цифро-кода – 35 символов, но для алфавита это не актуально)?

Примечание: здесь и далее информация будет приводиться с соответствующей ссылкой на официальный нормативный документ – ISO/IEC 18004-2015 (или российский вариант – ГОСТ ИСО/МЭК 18004-2015, далее – ГОСТ).

Для примера, информация о максимальном количестве символов в микрокодах и просто кодах хранится в таблице 7 ГОСТ. Дальше немножко мифической составляющей…

Программные библиотеки, в которых хранятся все алгоритмы кодирования как Micro QR Code, так и QR Code, и которые свободно распространяются во всех популярных операционных системах, принадлежат Ассоциации GAFAM (Google, Apple, Facebook, Amazon, Microsoft). Территориальная и административная принадлежность данной АссоциацииUSA (первая подсказка для 4 этапа). Именно это и было заложено как основной критерий максимальной длины смешанного алфавита микрокодов. Проверим: в послании от разработчиков зашифровано: UNITEDSTATESOFAMERICA (рис. 1). Ровно 21 символ. Бòльшей длины для микрокодов просто не существует. Почему все буквы большие и нет пробелов между словами – будет расшифровано позже.

Рисунок 1 – Максимальный Micro QR Code
Рисунок 1 – Максимальный Micro QR Code

Рассмотрим пошагово алгоритм расшифровки данного микрокода. Для простоты отображения математической составляющей будем использовать также продукцию АссоциацииMS Excel.

Запускаем программное приложение. Готовим Лист Книги для работы. Делаем размерность ячеек одинаковой (например, 23 на 23 пикселя) и по горизонтали, и по вертикали (рис. 2a). Затем закрашиваем поле фоновым цветом (рис. 2b).

Рисунок 2a – Заготовка для работы (клеточки)
Рисунок 2a – Заготовка для работы (клеточки)
Рисунок 2b – Заготовка для работы (поле)
Рисунок 2b – Заготовка для работы (поле)

Если посчитать количество пикселей (квадратиков) на рисунке по горизонтали и/или по вертикали, то получится матрица (табличка) размерностью 17×17. Создадим новую схему шаблон для микрокода (рис. 3).

Рисунок 3 – Матрица рабочей поверхности с нанесенными индикаторами
Рисунок 3 – Матрица рабочей поверхности с нанесенными индикаторами

Перенесем битовую составляющую исходной матрицы (рис. 1) на рабочую поверхности (рис. 4a). К сожалению, за долгие годы MS Excel так и не научился работать с цветом ячеек. Добавим в каждую цветную ячейку соответствующее битовое значение: белая ячейка – 0, черная ячейка – 1 (рис.  4b).

Рисунок 4a – Заполненная матрица битовой составляющей исходных данных
Рисунок 4a – Заполненная матрица битовой составляющей исходных данных
Рисунок 4b – Матрица битовой составляющей исходных данных с обозначениями
Рисунок 4b – Матрица битовой составляющей исходных данных с обозначениями

Для удобства отделим цветом индикатор служебной информации (рис. 5a) – битовая последовательность информации о формате. Чтение последовательности начинается с 14 бита, т.е. последовательность чтения будет 14, 13, 12, 11, 10 и т.д.

Рисунок 5a – Отделена цветом служебная информация
Рисунок 5a – Отделена цветом служебная информация

Также отделяем цветом индикатор распознавания микрокода (рис. 5b). Полученная матрица готова для дальнейшего анализа.

Рисунок 5b – Отделены цветом служебная информация и индикаторы
Рисунок 5b – Отделены цветом служебная информация и индикаторы

Примечание: для удобства дальнейшего описания ссылок на ячейки листа перейдем от современного отображения адресов ячеек в виде R1C1 (относительные ссылки) к старому формату в виде A1 (буквенно-числовое отображение). Выбираем в Меню ФайлПараметры. В категории Формулы в группе Работа с формулами снимаем галочку напротив пункта Стиль ссылок R1C1. В результате названия столбиков должны поменяться с чисел на латинские буквы (рис. 6).

Рисунок 6 – Итоговый результат отображения матрицы исходных данных
Рисунок 6 – Итоговый результат отображения матрицы исходных данных

Этап 1. Служебная информация

 Перед тем как начать работать с основной рабочей областью, необходимо расшифровать служебную информацию. Пример итогового результата приведен на рисунке 7.

Рисунок 7 – Расшифрованная служебная информация
Рисунок 7 – Расшифрованная служебная информация

Сначала переводим служебную информацию также в бинарное представление, т.е. ряды ячеек E12-L12 и L5-L12 представляем как набор 0 (светлые ячейки) и 1 (темные ячейки) (рис. 7).

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

Ячейка

Функция

Ячейка

Функция

V12

=E12

V14

=V12

W12

=F12

W14

=W12

X12

=G12

X14

=X12

Y12

=H12

Y14

=Y12

Z12

=I12

Z14

=Z12

AA12

=J12

AA14

=AA12

AB12

=K12

AB14

=AB12

AC12

=L12

AC14

=AC12

AC11

=L11

AD14

=AC11

AC10

=L10

AE14

=AC10

AC9

=L9

AF14

=AC9

AC8

=L8

AG14

=AC8

AC7

=L7

AH14

=AC7

AC6

=L6

AI14

=AC6

AC5

=L5

AJ14

=AC5

Воспользуемся рядом бит служебной информации 14 строки для определения версии и уровня микрокода, а также для получения вида используемой в данном коде маски. Сначала найдем соответствие в таблице ГОСТ, потом сделаем самопроверку.

Объединяем ячейки V16-AJ16 в единую. В полученную новую ячейку V16 добавляем функцию (рис. 7):

=V14&W14&X14&Y14&Z14&AA14&AB14&AC14&AD14&AE14&AF14&AG14&AH14&AI14&AJ14

По таблице С.1 ГОСТ (табл. 1) находим битовую последовательность информации о формате и соответствующую последовательность бит данных до маскирования. Для данного примера – 10100.

Таблица 1 – Корректирующие последовательности информации о формате

Последовательность до маскирования

Последовательность после маскирования
(символы Micro QR Code)

Биты данных

Биты исправления ошибок

Двоичная

Шестнадцатеричная

00000

0000000000

100010001000101

4445

00001

0100110111

100000101110010

4172

00010

1001101110

100111000101011

4Е2В

00011

1101011001

100101100011100

4В1С

00100

0111101011

101010110101110

55АЕ

00101

0011011100

101000010011001

5099

00110

1110000101

101111111000000

5FC0

00111

1010110010

101101011110111

5AF7

01000

1111010110

110011110010011

6793

01001

1011100001

110001010100100

62А4

01010

0110111000

110110111111101

6DFD

01011

0010001111

110100011001010

68СА

01100

1000111101

111011001111000

7678

01101

1100001010

111001101001111

734F

01110

0001010011

111110000010110

7С16

01111

0101100100

111100100100001

7921

10000

1010011011

000011011011110

06DE

10001

1110101100

000001111101001

03Е9

10010

0011110101

000110010110000

0CB0

10011

0111000010

000100110000111

0987

10100

1101110000

001011100110101

1735

10101

1001000111

001001000000010

1202

10110

0100011110

001110101011011

1D5B

10111

0000101001

001100001101100

186С

11000

0101001101

010010100001000

2508

11001

0001111010

010000000111111

203F

11010

1100100011

010111101100110

2F66

11011

1000010100

010101001010001

2А51

11100

0010100110

011010011100011

34E3

11101

0110010001

011000111010100

31D4

11110

1011001000

011111010001101

3E8D

11111

1111111111

011101110111010

ЗВВА

Проверим полученный результат. Заполняем ячейки в соответствии с таблицей:

Ячейка

Функция

Ячейка

Значение

AF6

=V14

AF7

1

AG6

=W14

AG7

0

AH6

=X14

AH7

0

AI6

=Y14

AI7

0

AJ6

=Z14

AJ7

1

 

Воспользуемся алгебраической функцией XOR для получения версии и уровня микрокода, и кода маски. Заполняем ячейки восьмой строчки:

Ячейка

Функция

AF8

=БИТ.ИСКЛИЛИ(AF6;AF7)

AG8

=БИТ.ИСКЛИЛИ(AG6;AG7)

AH8

=БИТ.ИСКЛИЛИ(AH6;AH7)

AI8

=БИТ.ИСКЛИЛИ(AI6;AI7)

AJ8

=БИТ.ИСКЛИЛИ(AJ6;AJ7)

В результате получаем последовательность 10100, полностью соответствующую полученной по таблице ГОСТ. Расшифруем полученную комбинацию. Разделим на две части: 101 и 00 (3 и 2 бита соответственно). Обратимся к таблице 13 ГОСТ (табл. 2).

Таблица 2 – Номер символа для Micro QR Code

Номер символа

Версия

Уровень исправления ошибок

Двоичный индикатор

0

М1

Только обнаружение

000

1

М2

L

001

2

М2

М

010

3

М3

L

011

4

М3

М

100

5

М4

L

101

6

М4

М

110

7

М4

Q

111

Получаем, что в данном микрокоде используется версия М4, уровень L, т.е. комбинация M4-L. Запомним, на последующих этапах данная информация пригодится.

Разбираем вторую часть служебной информации, комбинацию маски 00. Обратимся к рисунку 22 ГОСТ. Перенесем маску с соответствующим битовым кодом на Лист, начиная с ячейки AN4 (рис. 8).

Рисунок 8 – Выбранная маска для микрокода
Рисунок 8 – Выбранная маска для микрокода

Аналогично основной матрице, каждая черная ячейка обозначена как 1, а каждая белая – 0.

Все необходимые данные на основе служебной информации получены, переходим ко 2-му этапу.

Этап 2. Расшифровка данных основной рабочей области

 На основе матрицы исходных данных в диапазоне ячеек D4:T20 и матрицы маскирования в диапазоне ячеек AN4:BD20 получаем матрицу немаскированных данных в диапазоне ячеек D24:T40 с использованием функции XOR. Пример готового результата представлен на рисунке 9.

Рисунок 9 – Матрица немаскированных данных
Рисунок 9 – Матрица немаскированных данных

В ячейке M25 добавлена следующая формула:

=БИТ.ИСКЛИЛИ(M5;AW5)

Далее за нижний правый угол выделенной ячейки (магический квадрат) дублируем данную формулу на всю поверхность рабочей матрицы. В результате получаем немаскированный вариант для диапазона ячеек M25:T40 и E33:L40.

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

На основе таблицы 13 ГОСТ (табл. 2) определили, что в данной матрице используется формат и уровень M4-L. Обратимся к рисунку 11 ГОСТ, получаем, что маршрут будет представлен следующей схемой (рис. 10).

Рисунок 10 – Маршрут обхода рабочего поля для M4-L
Рисунок 10 – Маршрут обхода рабочего поля для M4-L

Перенесем маршрут на Лист MS Excel, начиная с ячейки AN24, где каждую ячейку подпишем соответствующим числовым значением. Результат представлен на рисунке 11.

Рисунок 11 – Маршрут обхода рабочего поля для M4-L на рабочем листе
Рисунок 11 – Маршрут обхода рабочего поля для M4-L на рабочем листе

Напомню: не обязательно каждую ячейку прописывать вручную. MS Excel умеет строить прогрессии. Например, заполняем ячейки BD40 и BD39 значениями 1 и 3 соответственно. Затем выделяем заполненные ячейки BD39:BD40 и за магический квадратик выделенного диапазона (нижний правый угол ячейки) тянем до ячейки BD25. В результате весь ряд будет заполнен. Остальное рабочее поле можно заполнить аналогичным образом.

Начиная с ячейки X24 в диапазоне ячеек X24:AH47 делаем шаблон-заготовку для последующего наполнения битовой комбинацией в буквенно-цифровом режиме. Пример полученного результата представлен на рисунке 12 (цветовая дифференциация произвольная).

Рисунок 12 – Шаблон-заготовка для битовых комбинаций
Рисунок 12 – Шаблон-заготовка для битовых комбинаций

Так как этой информации достаточно для расшифровки сообщения, переходим к третьему этапу.

Этап 3. Преобразование кода в набор символов

 В системе QR Code (в том числе и Micro QR Code) существует несколько разновидностей кодирования: числовой, алфавитно-цифровой, байтовый, кандзи, структурированное соединение и FNC1. Самые простые – числовой (число определенной длины из цифр 0..9) и алфавитно-цифровой (табл. 3).

Таблица 3 – Кодирование/декодирование для алфавитно-цифрового режима (Таблица 5 ГОСТ)

Знак

Значение

Знак

Значение

Знак

Значение

Знак

Значение

Знак

Значение

Знак

Значение

Знак

Значение

Знак

Значение

0

0

6

6

С

12

I

18

О

24

U

30

SP

36

.

42

1

1

7

7

D

13

J

19

Р

25

V

31

$

37

/

43

2

2

8

8

Е

14

К

20

Q

26

W

32

%

38

:

44

3

3

9

9

F

15

L

21

R

27

X

33

*

39

 

 

4

4

А

10

G

16

М

22

S

28

Y

34

+

40

 

 

5

5

В

11

Н

17

N

23

Т

29

Z

35

-

41

 

 

В данной таблице есть особенность – используется исключительно латиница верхнего регистра, т.е. большие буквы. Особенность не простая. Данную систему кодирования придумала и эффективно использовала команда разработчиков в 50-60-е годы при переходе от печатных машинок к электронным печатным машинкам. Встроенная система кодирования имеет скрытый алгоритм преобразования (а это вторая подсказка для ребуса 4 этапа). Вторая особенность – знак ПРОБЕЛ (код 36) имеет отдельное кодовое значение. При передачи коротких сообщений данным символом можно пренебречь. Как следствие, в расшифрованной комбинации букв данный символ будет пропущен.

Воспользуемся п. 7.4.4 ГОСТ для автоматизации преобразования битовых последовательностей в буквы латинского алфавита. Пример итогового варианта представлен на рисунке 13.

Рисунок 13 – Итоговый пример третьего этапа
Рисунок 13 – Итоговый пример третьего этапа

Сначала перенесем таблицу 3 на рабочий Лист MS Excel. Начиная с ячейки B49 в выделенном диапазоне B49:AT50 просто переносим всю последовательность символов в две строки (рис. 13).

Как было упомянуто ранее, битовые комбинации в диапазон ячеек X24:AH47 можно перенести вручную (простой вариант). Но можно и автоматизировать. Таблица функций заполнит битовые ячейки автоматически (табл. 4).

Таблица 4 – Функциональные ячейки битовых последовательностей

№ п/п

Ячейка

Функция

Первая строка

1.           

X25

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X24;$BD$25:$BD$40;0);ПОИСКПОЗ(X24;AO40:BD40;0))

2.           

Y25

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y24;$BC$25:$BC$40;0);ПОИСКПОЗ(Y24;AO40:BD40;0))

3.           

Z25

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z24;$BD$25:$BD$40;0);ПОИСКПОЗ(Z24;AO39:BD39;0))

4.           

AA25

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA24;$BC$25:$BC$40;0);ПОИСКПОЗ(AA24;AO39:BD39;0))

5.           

AB25

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB24;$BD$25:$BD$40;0);ПОИСКПОЗ(AB24;AO38:BD38;0))

6.           

AC25

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC24;$BC$25:$BC$40;0);ПОИСКПОЗ(AC24;AO38:BD38;0))

7.           

AD25

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD24;$BD$25:$BD$40;0);ПОИСКПОЗ(AD24;AO37:BD37;0))

8.           

AE25

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE24;$BC$25:$BC$40;0);ПОИСКПОЗ(AE24;AO37:BD37;0))

Вторая строка

9.           

X27

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X26;$BD$25:$BD$40;0);ПОИСКПОЗ(X26;AO36:BD36;0))

10.        

Y27

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y26;$BC$25:$BC$40;0);ПОИСКПОЗ(Y26;AO36:BD36;0))

11.        

Z27

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z26;$BD$25:$BD$40;0);ПОИСКПОЗ(Z26;AO35:BD35;0))

12.        

AA27

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA26;$BC$25:$BC$40;0);ПОИСКПОЗ(AA26;AO35:BD35;0))

13.        

AB27

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB26;$BD$25:$BD$40;0);ПОИСКПОЗ(AB26;AO34:BD34;0))

14.        

AC27

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC26;$BC$25:$BC$40;0);ПОИСКПОЗ(AC26;AO34:BD34;0))

15.        

AD27

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD26;$BD$25:$BD$40;0);ПОИСКПОЗ(AD26;AO33:BD33;0))

16.        

AE27

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE26;$BC$25:$BC$40;0);ПОИСКПОЗ(AE26;AO33:BD33;0))

17.        

AF27

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AF26;$BD$25:$BD$40;0);ПОИСКПОЗ(AF26;AO32:BD32;0))

18.        

AG27

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AG26;$BC$25:$BC$40;0);ПОИСКПОЗ(AG26;AO32:BD32;0))

19.        

AH27

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AH26;$BD$25:$BD$40;0);ПОИСКПОЗ(AH26;AO31:BD31;0))

Третья строка

20.        

X29

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X28;$BC$25:$BC$40;0);ПОИСКПОЗ(X28;AO31:BD31;0))

21.        

Y29

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y28;$BD$25:$BD$40;0);ПОИСКПОЗ(Y28;AO30:BD30;0))

22.        

Z29

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z28;$BC$25:$BC$40;0);ПОИСКПОЗ(Z28;AO30:BD30;0))

23.        

AA29

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA28;$BD$25:$BD$40;0);ПОИСКПОЗ(AA28;AO29:BD29;0))

24.        

AB29

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB28;$BC$25:$BC$40;0);ПОИСКПОЗ(AB28;AO29:BD29;0))

25.        

AC29

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC28;$BD$25:$BD$40;0);ПОИСКПОЗ(AC28;AO28:BD28;0))

26.        

AD29

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD28;$BC$25:$BC$40;0);ПОИСКПОЗ(AD28;AO28:BD28;0))

27.        

AE29

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE28;$BD$25:$BD$40;0);ПОИСКПОЗ(AE28;AO27:BD27;0))

28.        

AF29

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AF28;$BC$25:$BC$40;0);ПОИСКПОЗ(AF28;AO27:BD27;0))

29.        

AG29

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AG28;$BD$25:$BD$40;0);ПОИСКПОЗ(AG28;AO26:BD26;0))

30.        

AH29

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AH28;$BC$25:$BC$40;0);ПОИСКПОЗ(AH28;AO26:BD26;0))

Четвертая строка

31.        

X31

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X30;$BD$25:$BD$40;0);ПОИСКПОЗ(X30;AO25:BD25;0))

32.        

Y31

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y30;$BC$25:$BC$40;0);ПОИСКПОЗ(Y30;AO25:BD25;0))

33.        

Z31

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z30;$BB$25:$BB$40;0);ПОИСКПОЗ(Z30;AO25:BD25;0))

34.        

AA31

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA30;$BA$25:$BA$40;0);ПОИСКПОЗ(AA30;AO25:BD25;0))

35.        

AB31

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB30;$BB$25:$BB$40;0);ПОИСКПОЗ(AB30;AO26:BD26;0))

36.        

AC31

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC30;$BA$25:$BA$40;0);ПОИСКПОЗ(AC30;AO26:BD26;0))

37.        

AD31

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD30;$BB$25:$BB$40;0);ПОИСКПОЗ(AD30;AO27:BD27;0))

38.        

AE31

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE30;$BA$25:$BA$40;0);ПОИСКПОЗ(AE30;AO27:BD27;0))

39.        

AF31

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AF30;$BB$25:$BB$40;0);ПОИСКПОЗ(AF30;AO28:BD28;0))

40.        

AG31

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AG30;$BA$25:$BA$40;0);ПОИСКПОЗ(AG30;AO28:BD28;0))

41.        

AH31

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AH30;$BB$25:$BB$40;0);ПОИСКПОЗ(AH30;AO29:BD29;0))

Пятая строка

42.        

X33

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X32;$BA$25:$BA$40;0);ПОИСКПОЗ(X32;AO29:BD29;0))

43.        

Y33

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y32;$BB$25:$BB$40;0);ПОИСКПОЗ(Y32;AO30:BD30;0))

44.        

Z33

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z32;$BA$25:$BA$40;0);ПОИСКПОЗ(Z32;AO30:BD30;0))

45.        

AA33

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA32;$BB$25:$BB$40;0);ПОИСКПОЗ(AA32;AO31:BD31;0))

46.        

AB33

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB32;$BA$25:$BA$40;0);ПОИСКПОЗ(AB32;AO31:BD31;0))

47.        

AC33

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC32;$BB$25:$BB$40;0);ПОИСКПОЗ(AC32;AO32:BD32;0))

48.        

AD33

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD32;$BA$25:$BA$40;0);ПОИСКПОЗ(AD32;AO32:BD32;0))

49.        

AE33

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE32;$BB$25:$BB$40;0);ПОИСКПОЗ(AE32;AO33:BD33;0))

50.        

AF33

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AF32;$BA$25:$BA$40;0);ПОИСКПОЗ(AF32;AO33:BD33;0))

51.        

AG33

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AG32;$BB$25:$BB$40;0);ПОИСКПОЗ(AG32;AO34:BD34;0))

52.        

AH33

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AH32;$BA$25:$BA$40;0);ПОИСКПОЗ(AH32;AO34:BD34;0))

Шестая строка

53.        

X35

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X34;$BB$25:$BB$40;0);ПОИСКПОЗ(X34;AO35:BD35;0))

54.        

Y35

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y34;$BA$25:$BA$40;0);ПОИСКПОЗ(Y34;AO35:BD35;0))

55.        

Z35

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z34;$BB$25:$BB$40;0);ПОИСКПОЗ(Z34;AO36:BD36;0))

56.        

AA35

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA34;$BA$25:$BA$40;0);ПОИСКПОЗ(AA34;AO36:BD36;0))

57.        

AB35

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB34;$BB$25:$BB$40;0);ПОИСКПОЗ(AB34;AO37:BD37;0))

58.        

AC35

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC34;$BA$25:$BA$40;0);ПОИСКПОЗ(AC34;AO37:BD37;0))

59.        

AD35

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD34;$BB$25:$BB$40;0);ПОИСКПОЗ(AD34;AO38:BD38;0))

60.        

AE35

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE34;$BA$25:$BA$40;0);ПОИСКПОЗ(AE34;AO38:BD38;0))

61.        

AF35

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AF34;$BB$25:$BB$40;0);ПОИСКПОЗ(AF34;AO39:BD39;0))

62.        

AG35

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AG34;$BA$25:$BA$40;0);ПОИСКПОЗ(AG34;AO39:BD39;0))

63.        

AH35

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AH34;$BB$25:$BB$40;0);ПОИСКПОЗ(AH34;AO40:BD40;0))

Седьмая строка

64.        

X37

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X36;$BA$25:$BA$40;0);ПОИСКПОЗ(X36;AO40:BD40;0))

65.        

Y37

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y36;$AZ$25:$AZ$40;0);ПОИСКПОЗ(Y36;AO40:BD40;0))

66.        

Z37

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z36;$AY$25:$AY$40;0);ПОИСКПОЗ(Z36;AO40:BD40;0))

67.        

AA37

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA36;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AA36;AO39:BD39;0))

68.        

AB37

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB36;$AY$25:$AY$40;0);ПОИСКПОЗ(AB36;AO39:BD39;0))

69.        

AC37

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC36;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AC36;AO38:BD38;0))

70.        

AD37

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD36;$AY$25:$AY$40;0);ПОИСКПОЗ(AD36;AO38:BD38;0))

71.        

AE37

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE36;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AE36;AO37:BD37;0))

72.        

AF37

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AF36;$AY$25:$AY$40;0);ПОИСКПОЗ(AF36;AO37:BD37;0))

73.        

AG37

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AG36;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AG36;AO36:BD36;0))

74.        

AH37

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AH36;$AY$25:$AY$40;0);ПОИСКПОЗ(AH36;AO36:BD36;0))

Восьмая строка

75.        

X39

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X38;$AZ$25:$AZ$40;0);ПОИСКПОЗ(X38;AO35:BD35;0))

76.        

Y39

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y38;$AY$25:$AY$40;0);ПОИСКПОЗ(Y38;AO35:BD35;0))

77.        

Z39

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z38;$AZ$25:$AZ$40;0);ПОИСКПОЗ(Z38;AO34:BD34;0))

78.        

AA39

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA38;$AY$25:$AY$40;0);ПОИСКПОЗ(AA38;AO34:BD34;0))

79.        

AB39

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB38;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AB38;AO33:BD33;0))

80.        

AC39

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC38;$AY$25:$AY$40;0);ПОИСКПОЗ(AC38;AO33:BD33;0))

81.        

AD39

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD38;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AD38;AO32:BD32;0))

82.        

AE39

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE38;$AY$25:$AY$40;0);ПОИСКПОЗ(AE38;AO32:BD32;0))

83.        

AF39

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AF38;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AF38;AO31:BD31;0))

84.        

AG39

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AG38;$AY$25:$AY$40;0);ПОИСКПОЗ(AG38;AO31:BD31;0))

85.        

AH39

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AH38;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AH38;AO30:BD30;0))

Девятая строчка

86.        

X41

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X40;$AY$25:$AY$40;0);ПОИСКПОЗ(X40;AO30:BD30;0))

87.        

Y41

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y40;$AZ$25:$AZ$40;0);ПОИСКПОЗ(Y40;AO29:BD29;0))

88.        

Z41

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z40;$AY$25:$AY$40;0);ПОИСКПОЗ(Z40;AO29:BD29;0))

89.        

AA41

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA40;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AA40;AO28:BD28;0))

90.        

AB41

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB40;$AY$25:$AY$40;0);ПОИСКПОЗ(AB40;AO28:BD28;0))

91.        

AC41

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC40;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AC40;AO27:BD27;0))

92.        

AD41

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD40;$AY$25:$AY$40;0);ПОИСКПОЗ(AD40;AO27:BD27;0))

93.        

AE41

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE40;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AE40;AO26:BD26;0))

94.        

AF41

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AF40;$AY$25:$AY$40;0);ПОИСКПОЗ(AF40;AO26:BD26;0))

95.        

AG41

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AG40;$AZ$25:$AZ$40;0);ПОИСКПОЗ(AG40;AO25:BD25;0))

96.        

AH41

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AH40;$AY$25:$AY$40;0);ПОИСКПОЗ(AH40;AO25:BD25;0))

Десятая строчка

97.        

X43

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X42;$AX$25:$AX$40;0);ПОИСКПОЗ(X42;AO25:BD25;0))

98.        

Y43

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y42;$AW$25:$AW$40;0);ПОИСКПОЗ(Y42;AO25:BD25;0))

99.        

Z43

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z42;$AX$25:$AX$40;0);ПОИСКПОЗ(Z42;AO26:BD26;0))

100.     

AA43

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA42;$AW$25:$AW$40;0);ПОИСКПОЗ(AA42;AO26:BD26;0))

101.     

AB43

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB42;$AX$25:$AX$40;0);ПОИСКПОЗ(AB42;AO27:BD27;0))

102.     

AC43

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC42;$AW$25:$AW$40;0);ПОИСКПОЗ(AC42;AO27:BD27;0))

103.     

AD43

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD42;$AX$25:$AX$40;0);ПОИСКПОЗ(AD42;AO28:BD28;0))

104.     

AE43

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE42;$AW$25:$AW$40;0);ПОИСКПОЗ(AE42;AO28:BD28;0))

105.     

AF43

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AF42;$AX$25:$AX$40;0);ПОИСКПОЗ(AF42;AO29:BD29;0))

106.     

AG43

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AG42;$AW$25:$AW$40;0);ПОИСКПОЗ(AG42;AO29:BD29;0))

107.     

AH43

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AH42;$AX$25:$AX$40;0);ПОИСКПОЗ(AH42;AO30:BD30;0))

Одиннадцатая строчка

108.     

X45

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X44;$AW$25:$AW$40;0);ПОИСКПОЗ(X44;AO30:BD30;0))

109.     

Y45

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y44;$AX$25:$AX$40;0);ПОИСКПОЗ(Y44;AO31:BD31;0))

110.     

Z45

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z44;$AW$25:$AW$40;0);ПОИСКПОЗ(Z44;AO31:BD31;0))

111.     

AA45

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA44;$AX$25:$AX$40;0);ПОИСКПОЗ(AA44;AO32:BD32;0))

112.     

AB45

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB44;$AW$25:$AW$40;0);ПОИСКПОЗ(AB44;AO32:BD32;0))

113.     

AC45

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC44;$AX$25:$AX$40;0);ПОИСКПОЗ(AC44;AO33:BD33;0))

114.     

AD45

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD44;$AW$25:$AW$40;0);ПОИСКПОЗ(AD44;AO33:BD33;0))

115.     

AE45

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE44;$AX$25:$AX$40;0);ПОИСКПОЗ(AE44;AO34:BD34;0))

116.     

AF45

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AF44;$AW$25:$AW$40;0);ПОИСКПОЗ(AF44;AO34:BD34;0))

117.     

AG45

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AG44;$AX$25:$AX$40;0);ПОИСКПОЗ(AG44;AO35:BD35;0))

118.     

AH45

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AH44;$AW$25:$AW$40;0);ПОИСКПОЗ(AH44;AO35:BD35;0))

Двенадцатая строчка

119.     

X47

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(X46;$AX$25:$AX$40;0);ПОИСКПОЗ(X46;AO36:BD36;0))

120.     

Y47

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Y46;$AW$25:$AW$40;0);ПОИСКПОЗ(Y46;AO36:BD36;0))

121.     

Z47

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(Z46;$AX$25:$AX$40;0);ПОИСКПОЗ(Z46;AO37:BD37;0))

122.     

AA47

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AA46;$AW$25:$AW$40;0);ПОИСКПОЗ(AA46;AO37:BD37;0))

123.     

AB47

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AB46;$AX$25:$AX$40;0);ПОИСКПОЗ(AB46;AO38:BD38;0))

124.     

AC47

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AC46;$AW$25:$AW$40;0);ПОИСКПОЗ(AC46;AO38:BD38;0))

125.     

AD47

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AD46;$AX$25:$AX$40;0);ПОИСКПОЗ(AD46;AO39:BD39;0))

126.     

AE47

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AE46;$AW$25:$AW$40;0);ПОИСКПОЗ(AE46;AO39:BD39;0))

127.     

AF47

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AF46;$AX$25:$AX$40;0);ПОИСКПОЗ(AF46;AO40:BD40;0))

128.     

AG47

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AG46;$AW$25:$AW$40;0);ПОИСКПОЗ(AG46;AO40:BD40;0))

129.     

AH47

=ИНДЕКС($E$25:$T$40;ПОИСКПОЗ(AH46;$AV$25:$AV$40;0);ПОИСКПОЗ(AH46;AO40:BD40;0))

 Воспользуемся алгоритмом, приведенным п. 7.4.4 ГОСТ.

  1. Объединим ячейки битовых комбинаций в одну в каждой строчке.

№ п/п

Ячейка

Функция

1.          

AI27

=X27&Y27&Z27&AA27&AB27&AC27&AD27&AE27&AF27&AG27&AH27

2.          

AI29

=X29&Y29&Z29&AA29&AB29&AC29&AD29&AE29&AF29&AG29&AH29

3.          

AI31

=X31&Y31&Z31&AA31&AB31&AC31&AD31&AE31&AF31&AG31&AH31

4.          

AI33

=X33&Y33&Z33&AA33&AB33&AC33&AD33&AE33&AF33&AG33&AH33

5.          

AI35

=X35&Y35&Z35&AA35&AB35&AC35&AD35&AE35&AF35&AG35&AH35

6.          

AI37

=X37&Y37&Z37&AA37&AB37&AC37&AD37&AE37&AF37&AG37&AH37

7.          

AI39

=X39&Y39&Z39&AA39&AB39&AC39&AD39&AE39&AF39&AG39&AH39

8.          

AI41

=X41&Y41&Z41&AA41&AB41&AC41&AD41&AE41&AF41&AG41&AH41

9.          

AI43

=X43&Y43&Z43&AA43&AB43&AC43&AD43&AE43&AF43&AG43&AH43

10.      

AI45

=X45&Y45&Z45&AA45&AB45&AC45&AD45&AE45&AF45&AG45&AH45

  1. Переводим полученную двоичную кодовую комбинацию в десятичный формат.

№ п/п

Ячейка

Функция

1.          

AJ27

=ДЕС(AI27;2)

2.          

AJ29

=ДЕС(AI29;2)

3.          

AJ31

=ДЕС(AI31;2)

4.          

AJ33

=ДЕС(AI33;2)

5.          

AJ35

=ДЕС(AI35;2)

6.          

AJ37

=ДЕС(AI37;2)

7.          

AJ39

=ДЕС(AI39;2)

8.          

AJ41

=ДЕС(AI41;2)

9.          

AJ43

=ДЕС(AI43;2)

10.      

AJ45

=ДЕС(AI45;2)

 

  1. Находим код первой буквы закодированного слога.

№ п/п

Ячейка

Функция

1.          

AI26

=ЧАСТНОЕ(AJ27;45)

2.          

AI28

=ЧАСТНОЕ(AJ29;45)

3.          

AI30

=ЧАСТНОЕ(AJ31;45)

4.          

AI32

=ЧАСТНОЕ(AJ33;45)

5.          

AI34

=ЧАСТНОЕ(AJ35;45)

6.          

AI36

=ЧАСТНОЕ(AJ37;45)

7.          

AI38

=ЧАСТНОЕ(AJ39;45)

8.          

AI40

=ЧАСТНОЕ(AJ41;45)

9.          

AI42

=ЧАСТНОЕ(AJ43;45)

10.      

AI44

=ЧАСТНОЕ(AJ45;45)

  1. Находим код второй буквы закодированного слога.

№ п/п

Ячейка

Функция

1.          

AJ26

=AJ27-AI26*45

2.          

AJ28

=AJ29-AI28*45

3.          

AJ30

=AJ31-AI30*45

4.          

AJ32

=AJ33-AI32*45

5.          

AJ34

=AJ35-AI34*45

6.          

AJ36

=AJ37-AI36*45

7.          

AJ38

=AJ39-AI38*45

8.          

AJ40

=AJ41-AI40*45

9.          

AJ42

=AJ43-AI42*45

10.      

AJ44

=AJ45-AI44*45

  1. По полученной кодовой позиции получаем декодированный символ.

№ п/п

Ячейка

Функция

1.          

W26

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AI26;$B$50:$AT$50;0))

2.          

W27

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AJ26;$B$50:$AT$50;0))

3.          

W28

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AI28;$B$50:$AT$50;0))

4.          

W29

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AJ28;$B$50:$AT$50;0))

5.          

W30

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AI30;$B$50:$AT$50;0))

6.          

W31

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AJ30;$B$50:$AT$50;0))

7.          

W32

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AI32;$B$50:$AT$50;0))

8.          

W33

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AJ32;$B$50:$AT$50;0))

9.          

W34

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AI34;$B$50:$AT$50;0))

10.      

W35

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AJ34;$B$50:$AT$50;0))

11.      

W36

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AI36;$B$50:$AT$50;0))

12.      

W37

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AJ36;$B$50:$AT$50;0))

13.      

W38

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AI38;$B$50:$AT$50;0))

14.      

W39

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AJ38;$B$50:$AT$50;0))

15.      

W40

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AI40;$B$50:$AT$50;0))

16.      

W41

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AJ40;$B$50:$AT$50;0))

17.      

W42

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AI42;$B$50:$AT$50;0))

18.      

W43

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AJ42;$B$50:$AT$50;0))

19.      

W44

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AI44;$B$50:$AT$50;0))

20.      

W45

=ИНДЕКС($B$49:$AT$49;ПОИСКПОЗ(AJ44;$B$50:$AT$50;0))

 6. Добавляем служебную информацию.

№ п/п

Ячейка

Функция

1.          

AF25

=AA25&AB25&AC25&AD25&AE25

2.          

AG25

=ДЕС(AF25;2)

В ячейках X25:Z25 спрятана комбинация – 001, обозначение буквенно-цифрового режима (табл. 2 ГОСТ). В ячейках AA25:AE25 спрятана битовая последовательность количества символов. В полученном значении в ячейке AG2521 символ (что полностью соответствует исходным данным).

В результате получена комбинация из последовательности букв латинского алфавита:

UNITEDSTATESOFAMERIC

Не хватает ровно одной буквы, зашифрованной в диапазоне X47:AH47. Если бы программный модуль Ассоциации работал полностью в соответствии с ГОСТ, то к букве A была бы добавлена цифра 0, и в строке была бы следующая последовательность – 00111000010. Но в данной строке другая комбинация. Что не так? Переходим к самому секретному 4 этапу.

Этап 4. Декодирования последней буквы нечетной последовательности

С одной стороны, скрытая система кодирования была разработана теми же авторами, что и предыдущий буквенно-цифровой режим в 50-60-е годы. Да и наименование у него достаточно известное – USA. С другой стороны, так как данная последовательность не приведена в ГОСТ (и не была раскрыта самой Ассоциацией) в явном виде дальше приведена не будет. Но будет ряд подсказок, на основе которых можно будет получить последовательность:

-     в названии USA спрятано: если в раскрытом режиме комбинировать код буквы A и буквы U, то можно получить код первой буквы скрытого алфавита, а также критерий смещения;

-     в названии USA спрятано: если к коду буквы S в известном режиме добавить код неизвестного режима и вычесть код новой буквы, то получим, что это первая буква названия 51 штата (кстати, в 60-е годы так и не стал 51 штатом);

-     если к количеству символов рабочего поля уровня M1 добавить код первой буквы алфавита, можно получить первую букву имени одного из разработчиков – J;

-     код по количеству символов рабочего поля уровня M2 дает первую букву имени одного из разработчиков – K;

-     код по количеству символов рабочего поля уровня M3 дает первую букву имени одного из разработчиков – X;

-     если из количества символов рабочего поля уровня M4 вычесть код последней буквы алфавита, можно получить первую букву имени одного из разработчиков – D.

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

UNITEDSTATESOFAMERICA

или

United States of America

Удачи в декодировании Micro QR Code версии M4!!!

Комментарии (0)