
Введение
В настоящее время основным методом защиты ценной информации (личной, коммерческой и т.п.) являются криптографические методы, то есть методы, видоизменяющие представление информации так, чтобы только уполномоченные на то пользователи могли получить доступ к смысловому содержанию информации. Процесс преобразования информации в форму, непонятную посторонним, называется шифрованием.
Шифрование применяется человеком с древних времен. И одним из методов, обеспечивающим защиту информации, является метод «магических» квадратов. Будучи простым по сути, этот метод относится к классу так называемых перестановочных шифров.
Необходимо разработать программу, позволяющую строить «магический» квадрат (далее – «МК») определенного размера.
1. Постановка задачи
1.1 Назначение и функции программы
В ходе выполнения лабораторной работы в среде Delphi 7 необходимо разработать программу, позволяющую строить МК с заданным пользователем размером стороны, обладающую следующими функциями:
1) ввод с клавиатуры размера стороны МК n
2) построение МК со стороной требуемого размера
3) вывод заполненного числами МК на экран
4) расчет и вывод на экран суммы МК
1.2 Математическая модель задачи
1.2.1 Математическая формулировка задачи
«Магический» квадрат (МК) – это квадратная таблица со вписанными в ее клетки последовательными натуральными числами от 1, которые дают в сумме по каждому столбцу, каждой строке и каждой диагонали одно и то же число.
Доказано, что М. к. можно построить для любого n, начиная с n = 3. На рис. приведены М. к. для n = 3и n = 4. Существуют М. к., удовлетворяющие ряду дополнительных условий, например М. к. с 64 клетками, который можно разбить на 4 меньших, содержащих по 16 клеток квадрата, причём в каждом из них сумма чисел любой строки, столбца или большой диагонали одна и та же (= 130). В Индии и некоторых других странах М. к. употребляли в качестве талисманов.
На известной гравюре Дюрера «Меланхолия» позади грустящего ангела изображен магический квадрат, заполненный цифрами. Подобные квадраты широко применялись для вписывания шифруемого текста по приведенной в них нумерации. Если потом выписать содержимое таблицы по строкам, то получалась шифровка перестановкой букв. Считалось, что созданные с их помощью шифровки охраняет не только ключ, но и магическая сила. Вот пример магического квадрата и его шифровки:
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
О И Р Т
З Ш Е Ю
Ж А С
Е Г О П
Полученная из ПРИЕЗЖАЮ ШЕСТОГО, шифровка ОИРТЗШЕЮ ЖАСЕГОП представляется довольно основательной. На первый взгляд кажется, будто магических квадратов очень мало. Тем не менее их число очень быстро возрастает с увеличением размера квадрата. Так, существует лишь один магический квадрат размером 3 х 3, если не принимать во внимание его повороты. Магических квадратов 4 х 4 насчитывается уже 880, а число магических квадратов размером 5 х5 около 250000. Поэтому магические квадраты больших размеров могли быть хорошей основой для надежной системы шифрования того времени, потому что ручной перебор всех вариантов ключа для этого шифра был немыслим.
Наиболее простым методом построения магических квадратов нечетного порядка является самый древний "индийский" алгоритм (n – размер стороны квадрата):
1. Числа от 1 до n2 поочередно вписываются в клетки квадрата.
2. Число 1 вписывается в среднюю клетку верхней строки.
3. Если число k вписано в клетку (i,j) и k делится на n, то число k+1 вписывается в клетку (i+1,j).
4. Если число k вписано в клетку (i,j) и k не делится на n, то число k+1 вписывается в клетку (i-1,j+1). Если при этом правило требует вписать число в клетку с координатой i=0 или j>n, то число вписывается в клетку с координатойi=n или соответственно j=1.
Для построения квадратов четного порядка (n - четное) применим метод Раус-Болла.
Он начинается с того, что квадрат заполняется слева направо и сверху вниз числами от 1 до n2 в их естественном порядке. Затем выполняются перестановки чисел в некоторых клетках, после чего квадрат становится «магическим».
Сначала рассмотрим случай "четно-четного" n=2m=4r, где m и r - натуральные числа.
Правила построения четно-четного «магического» квадрата таковы:
1. Разделить заполненный числами от 1 до n2 квадрат на четыре квадрата порядка m осями симметрии.
2. В каждой строке и столбце верхнего левого квадрата порядка m отметить rклеток ( всего mr клеток). Это можно сделать, применив "шахматный" порядок, начиная с клетки (1,2).
3. Для каждой из отмеченных клеток (i,j) отметить симметричную ей относительно вертикальной оси клетку (i, n-j+1), и содержимое каждой из m2отмеченных клеток переставить с содержимым соответствующей центрально-симметричной ей клетки.
После этих перестановок получится магический квадрат.
Рассмотрим теперь случай n=2m, где m=2r+1 - нечетное число.
Если m>1, то магические квадраты порядка n существуют и называются "четно-нечетными". Построение четно-нечетного магического квадрата производится аналогично построению четно-четного квадрата, но в этом случае применяется три типа перестановок чисел в клетках.
Правила построения четно-нечетного магического квадрата порядка n=2m, где m=2r+1>1 таковы:
1. Разделить заполненный числами от 1 до n2 квадрат на четыре квадрата порядка m осями симметрии.
2. В левом верхнем квадрате порядка m выделить 3 группы клеток, пометив их знаками +, - и | соответственно. В каждой строке и каждом столбце нужно выделить r клеток первой группы. Это можно сделать, выделив первые r клеток в первой строке и затем сдвигать на 1 клетку вправо соответствующую группу клеток в следующих строках. Клеток второго и третьего типа надо выделить по одной в каждой строке и каждом столбце. В качестве клеток второй и третьей групп можно взять клетки, расположенные на диагоналях, начинающихся с r+1 и r+2 клеток первой строки и направленных вправо и вниз.
3. Для клеток первой группы находим симметричные клетки относительно вертикальной оси, помечаем их тоже знаком + и содержимое каждой из 2mг таких отмеченных клеток обмениваем с содержимым соответствующей ей центрально-симметричной клетки.
4. Содержимое каждой из m клеток, отмеченных знаком минус, обмениваем с содержимым симметричной относительно горизонтальной оси клетки.
5. Содержимое каждой из m клеток третьей группы обмениваем с содержимым симметричной относительно вертикальной оси клетки.
После этих перестановок получится четно-нечетный магический квадрат.