Полибианский квадрат.ppt
- Количество слайдов: 6
Полибианский квадрат
Дано: • открытый текст (будем рассматривать латинский строчный алфавит) • ключ – таблица символов (при необходимости дополняем алфавит до прямоугольной таблицы символом «*» ) Требуется получить: • шифртекст zero one q u s j c w i d k v e o f l b r p g y n *opffro t a h x m z * *
Рассмотрим задачу Дано: • один символ • ключ – таблица символов (при необходимости дополняем алфавит до прямоугольной таблицы символом «*» ) Требуется получить: • шифрообозначение заданного символа a q u s j c w i d k v e o f l b r p g y n h t a h x m z * *
var c: char; i, j, n, k, k 1, k 2, j 1, v, m: integer; a: array[1. . 100, 1. . 100] of char; begin readln(n, m); for i: =1 to n do begin for j: =1 to m do read(a[i, j]); readln; end; readln(с); for k: =1 to n do for j: =1 to m do if a[k, j]=с then begin k 1: =k; j 1 : = j; end; if k 1<n then k 2: =k 1+1 else k 2: =1; writeln( a[k 2, j 1]; ); end. {считывание таблицы символов - ключа} {обязательно для массива символов} {считывание символа для шифрования} {ищем местоположение символа в таблице} {вычисляем номер строки зашифрованного символа}
Генерация случайного ключа • Пусть z находится в последнем столбце и кодируется «*» . • Задача: в произвольном порядке расставить оставшиеся символы в квадрате 5*5 • идем по алфавиту • для каждой буквы находим случайные и незанятые координаты по строкам и столбцам в диапазоне от 1 до 5
n: =5; m: =6; for i: =1 to n do for j: =1 to m do a[i, j]: ='*'; randomize; for c: ='a' to 'y' do begin repeat i: =random(5)+1; j: =random(5)+1; until a[i, j]='*'; a[i, j]: =c; end; a[1, 6]: ='z'; заполняем таблицу символами «*» для каждой буквы от «а» до «y» ищем случайные номера строк и столбцов в диапазоне от 1 до 5, еще не заполненные в таблице, записываем символ в таблицу записываем «z»
Полибианский квадрат.ppt