4 курс / ЗащИнф / лаб-р-защ-2 / Лаб. раб
.2.doc
Лабораторная работа №2
Шифр Виженера
Цель работы: изучение способа шифрования с помощью шифра Вижинера.
Введение
В шифре Виженера ключ задается набором из d символов. Шифрование сообщения заключается в следующем . Заданный набор (ключ) подписываются с повторением под сообщением и коды символов этих последовательностей складываются по модулю М, где М - длина алфавита. Если используются только буквы, то каждая буква , например, латинского алфавита нумеруется от А = 0 до Z = 25. Таким образом, выходное сообщение будет содержать коды символов :
ei = si+ki (mod М),
где si - код символа исходного сообщения, ki - код символа ключа.
Повторное применение двух или более шифров Виженера называется составным шифром Виженера. Шифрование осуществляется по формуле:
ei = si + ki + li + ... + pi (mod M),
где ki,li,...,pi могут иметь различные периоды. Период их суммы , как и в составной транспозиции, будет наименьшим общим кратным отдельных периодов. Если используется шифр Виженера с неограниченным неповторяющимся ключом, то это шифр Вернама, в котором также
ei = si + ki (mod M),
но ki выбираются случайно и независимо среди чисел 0, 1,..., M.
Пример программы:
Представленная ниже программа шифрования осуществляет шифрование записей файла с помощью подстановки Вижинера , при этом осуществляется последовательное сложение очередного байта текущей записи и кода ключевого символа и вычисление остатка по модулю 256.
Листинг программы
program VIGIN; {программа шифрования по вижинеру}
uses WinCrt,Windos;
var
i,j,k,m:integer;
f1,f2:file;
numf1,numf2:string;
nr,nw:word;
buf1,buf2:array[1..2048]of char;
bf:char;
kluch:array[1..10] of char;
begin
{$I-}
writeln(' программа шифрования файла по вижинеру ');
writeln('введите имя шифруемого файла ');
readln(numf1);
assign(f1,numf1); readln;
reset(f1,1);
writeln('файл открыт');
writeln('введите имя зашифрованного файла');
readln(numf2);
assign(f2,numf2); readln;
rewrite(f2,1);
writeln('введите ключ – строку из десяти символов');
for i:=1 to 10 do kluch[i]:=readkey;
writeln;writeln('ваш ключ ');
for i:=1 to 10 do write(kluch[i]);
writeln;
repeat
blockread(f1,buf1,sizeof(buf1),nr);
for i:=1 to nr div 10 do
begin
for j:=1 to 10 do
begin
k:=10*(i-1)+j;
m:=(ord(buf1[k])+ord(kluch[j])) mod 256;
buf2[k]:=chr(m);
end;
end;
blockwrite(f2,buf2,nr,nw);
until (nr=0) or (nw<>nr);
close(f1);
close(f2);
writeln('файл зашифрован')
{$I+}
end.
Варианты задания
1 Разобрать программу VIGIN.pas , которая осуществляет шифрование
файла с помощью алгоритма Вижинера с помощью ключа с d=10
2 С помощью программы VIGIN.pas зашифровать файл D2.doc и
получить файл D2_s.doc
Номер вариента |
Ключ |
1 |
Sahufwlkgv |
2 |
Dsco7fpcmu |
3 |
438T49GdVW |
4 |
C803Re-8s5 |
5 |
C8fd7e8rvd |
6 |
49fvj9wfqr2 |
7 |
D98fwvvjwe |
8 |
1e012r8u42 |
9 |
D130rckmsc |
10 |
3288cvwqfj |
3 На основе программы VIGIN.pas сделать программу дешифрования
VIGIN_DSH.pas
-
Расшифровать файл D2_S.doc и получить дешифрованный файл
D2_DSH.doc . Сравнить файлы D2.doc и D2_DSH.doc .
-
Предложить собственный ключ и проверить ее шифровкой и
расшифровкой файлов.
-
Прочитать и разобрать описания устройств, содержащихся в файле
D2.doc :
-
назначение устройства
-
принцип действия устройства
-
характеристики устройств (габариты, потребляемая мощность, способ установки, режимы работы и др.)
Выполнение лабораторной работы
1. Получить задание у преподавателя.
2. Написать и отладить на компьютере программу расшифрования
файла.
3. Получить и представить преподавателю результат выполнения пунктов 1-7.
Содержание отчета
Отчет включает:
1)краткое теоретическое введение
2) содержание задания;
3) листинги программ и. результаты выполнения пунктов 1-7
задания.
Контрольные вопросы
-
Заданы две подстановки Вижинера с периодами d1=56 и d2=33, применяемые последовательно . Каков будет общий период такого шифра ?
-
Каким способом осуществляется подавление телефонных закладок в
устройстве , описанном в файле DEV3.doc.?
-
Какова зона подавления, которое обеспечивает устройство , описанном в файле DEV31.doc.?