Консультация № 178014
24.04.2010, 19:31
0.00 руб.
0 3 1
«Шифрование методом перестановки»
Цель занятия: ознакомление с шифрованием методом перестановки

Теоретический материал

Этот метод заключается в том, что символы шифруемого текста переставляются по определенным правилам внутри шифруемого блока символов. Рассмотрим некоторые раз¬новидности этого метода.
Рассмотрим метод шифрования, называемый одиночной перестановкой по ключу. Он отличается лишь тем, что колонки таблицы переставляются по ключевому слову, фразе или набору чисел длиной в строку таблицы. Использовав в виде ключа слово ЛУНАТИК, получим такую таблицу.

Л У Н А Т И К
4 7 5 1 6 2 3
Н О Н С Б Н Я
Е Е О Я О Е Т
Я С В Е Л П Н
С Т И Щ Е О Ы
Н А Т Е Е Н М
До перестановки

А И К Л Н Т У
1 2 3 4 5 6 7
С Н Я Н Н Б О
Я Е Т Е О О Е
Е П Н Я В Л С
Щ О Ы С И Е Т
Е Н М Н Т Е А
После перестановки

В верхней строке записан ключ, а номера под ключом определены по естественному порядку соответствующих букв ключа в алфавите. Если в ключе встретились бы одинаковые буквы, они бы нумеровались слева направо. Получается шифровка: СНЯНН БОЯЕТ ЕООЕЕ ПНЯВЛ СЩОЫС ИЕТЕН МНТЕА.
Для дополнительной скрытности можно повторно шифровать сообщение, которое уже было зашифровано. Этот способ известен под названием «двойная перестановка». Для этого размер второй таблицы подбирают так, чтобы длины ее строк и столбцов были другие, чем в первой таблице. Лучше всего, если они будут взаимно простыми. Кроме того, в первой таблице можно переставлять столбцы, а во второй строки. Наконец, можно заполнять таблицу зигзагом, змейкой, по спирали или каким-то другим способом. Такие способы заполнения таблицы если и не усиливают стойкость шифра, то делают процесс шифрования гораздо более занимательным.
Слабость шифрования простой перестановкой обуславливает¬ся тем, что при большой длине шифруемого текста в зашифрован¬ном тексте могут проявиться закономерности символов ключа. Для устранения этого недостатка можно менять ключ после за¬шифровки определенного числа знаков. При достаточно частой смене ключа стойкость шифрования можно существенно по¬высить. При этом, однако, усложняется организация процесса шифрования и расшифрования.
Кроме одиночных перестановок использовались еще двойные перестановки столбцов и строк таблицы с сообщением. При этом перестановки определялись отдельно для столбцов и отдельно для строк. В таблицу вписывался текст и переставлялись столбцы, а потом строки. При расшифровке порядок перестановок был обратный. Насколько просто выполнялось это шифрование, показывает следующий пример:
2 4 1 3
4 П Р И Е
1 З Ж А Ю
2 Ш Е С
3 Т О Г О
1 2 3 4
4 И П Е Р
1 А З Ю Ж
2 Е С Ш
3 Г Т О О
1 2 3 4
1 А З Ю Ж
2 Е С Ш
3 Г Т О О
4 И П Е Р


исходная таблица перестановка столбцов перестановка строк
Получается шифровка АЗЮЖЕ СШГТООИПЕР. Ключом к этому шифру служат номера столбцов 2431 и номера строк 4123 исходной таблицы. Число вариантов двойной перестановки тоже велико: для таблицы 3x3 их 36, для 4x4 их 576, а для 5x5 их уже 14400. Однако двойная перестановка также очень слабый вид шифра, легко читаемый при любом размер таблицы шифрования.
Джероламо Кардано открыл класс шифров перестановок, названных решетками или трафаретами. Они представляют собой квадратные таблицы, где четверть ячеек прорезана так, что при четырех поворотах они покрывают весь квадрат. Вписывание в прорезанные ячейки текста и повороты решетки продолжаются до тех пор, пока весь квадрат не будет заполнен. Например, на рисунке ниже показан процесс шифровки решеткой 4x4.
П З Т
Р Ж Ш О
И А Е Г
Е Ю С О
0о 90о 180о 270о

З Т П
О Ж Ш Р
Е И Г А
Е С Ю О
Шифр

Черными квадратами обозначены непрозрачные ячейки. А повороты осуществляются по часовой стрелке на указанный ниже угол:
В результате получается шифровка ЗТП ОЖШРЕИГАЕСЮЮ. Число подобных решеток быстро растет с их размером. Так решетка 2x2 единственна, решеток 4x4 уж 256, а решеток размером 6x6 свыше ста тысяч. Несмотря на кажущуюся сложность, шифры типа решеток довольно просто вскрываются и не могут использоваться в виде самостоятельного шифра. Однако они очень удобны и еще долго использовались в практике для усиления шифров замены.

Задание на лабораторную работу
1. Ознакомиться с примером шифрования методом одиночной перестановки, приведенным в методических указаниях.
2. Разработать программу, осуществляющую шифрование и расшифрование текста методом одиночной перестановки и поддерживающую ввод различных ключей. Зашифровать фразу своим личным ключом методом одиночной перестановки, сохраняя ключ и текст конфиденциальными для других студентов. Оформить результаты работы.
3. Ознакомиться с примером шифрования методом двойной перестановки, приведенным в методических указаниях.
4. Разработать программу, осуществляющую шифрование и расшифрование текста методом двойной перестановки, сохраняя ключ и текст конфиденциальными для других студентов. Оформить результаты работы.
5. Ознакомиться с примером шифрования методом решетки Кардано, приведенным в методических указаниях и придумать фразу для последующего зашифрования.
6. Разработать программу, осуществляющую шифрование и расшифрование методом решетки Кардано размером 6х6 и зашифровать фразу своим личным ключом, сохраняя ключ и текст конфиденциальными для других студентов. Оформить результаты работы.

Обсуждение

Неизвестный
25.04.2010, 20:05
общий
1) Холмса и читали и смотрели, так что недостаток в том, что черных (светлых) клеток не видим ... - рисунок, что-ли, разместите. Или нужен способ описания решетки и генерации ее такой, чтобы при повороте клетки не совпадали? Смогём, конечно, но напишите, что именно сделать НАМ нужно. Что именно Вы не понимаете?
Складывается впечатление, что потом Вам дудут чужие тексты для расшифровки
2) Нет времени читать о методе перестановки (на работе книга лежит, но дел будте в понедельник много). Так что еще вопросы:
Если в ключе встретились бы одинаковые буквы, они бы нумеровались слева направо.
- эта фраза не понятна
Неизвестный
26.04.2010, 16:08
общий
Шифрование с помощью решетки описано в книге Перельмана "Живая математика". Там же описан и метод построения решеток. Еще в школе читал.
давно
Академик
320937
2216
26.04.2010, 16:51
общий
это ответ
Здравствуйте, Андрей Куманюк. Ответ на пункт 6 в приложении. ABC-Pascal. Источник: http://www.cyberforum.ru/pascal/thread33245.html, внесены некоторые исправления в индексы элементов массива.


Приложение:
{Разработать программу, осуществляющую шифрование и
расшифрование методом решетки Кардано размером 6х6
}
{ http://www.cyberforum.ru/pascal/thread33245.html }
{ Исправлено: lamed }
program p178014;
const
n = 6;
type
sType = string[n];
matrix = array[1 .. n] of sType;
const
mask: matrix = (
'.x..x.',
'.x.x..',
'..x..x',
'......',
'...x..',
'x.x...'
);

st: string =
'когдаумолкнутвсепесникоторыхянезнаю!';

var
encoded: matrix;
masked: matrix;

{ Процедура поворота матрицы }
procedure T(var res: matrix);
var
i, j: integer;
mx: matrix;
begin
mx := res;
for i := 1 to n do
for j := 1 to n do
res[j][n - i + 1] := mx[i][j];
end;

{ Зашифровка текста }
procedure EncodeText(const s: string;
const mask: matrix; var mx: matrix);
var
i, j, count: integer;
masked: matrix;
begin
{ Заполнение матрицы mx строками по N пробелов }
for i := 1 to n do
for j := 1 to n do mx[i] := mx[i] + #32;

masked := mask;
count := 1;
while count <= length(s) do begin

for i := 1 to n do
for j := 1 to n do
if masked[i][j] = 'x' then begin
mx[i][j] := s[count];
inc(count)
end;
T(masked);

end;
end;

{ Расшифровка текста }
function DecodeText(const mask, encoded: matrix): string;
var
s: string;
i, j, count: integer;
masked: matrix;
begin

masked := mask;
count := 0; s := '';
while length(s) < n*n do begin
for i := 1 to n do
for j := 1 to n do
if masked[i][j] = 'x' then s := s + encoded[i][j];
T(masked);
end;
DecodeText := s;

end;
var
i: integer;
begin

EncodeText(st, mask, encoded);

writeln('encoded text: ');
for i := 1 to n do begin
writeln(encoded[i]);
end;

writeln(DecodeText(mask, encoded));

end.
Форма ответа