
Лабораторная работа 1 / Защита_информации_1
.docМинистерство образования и науки РФ
Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»
кафедра математического обеспечения ЭВМ
Отчет
по лабораторной работе №1
«Простые шифры»
по дисциплине «Методы и средства защиты компьютерной информации»
Выполнили: студенты гр 3341 Рыжок М.С. Гвоздякова Е.А.
Проверил: доцент кафедры МО ЭВМ Горячев Г.А.
Санкт-Петербург 2008-04-07
Лабораторная работа №1
Простые шифры
Цель работы: Ознакомление с простыми симметричными криптографическими шифрами на основе методов подстановок, перестановок и гаммирования.
Задание: Разработка и программная реализация алгоритма шифрования Цезаря (линейный сдвиг по алфавиту)
Контрольный пример: пусть надо зашифровать фразу «ПРИШЕЛ УВИДЕЛ ПОБЕДИЛ» со сдвигом по алфавиту на 3 позиции вправо
Русский алфавит считаем состоящим из 32 букв(без буквы Ё)
АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
Тогда при сдвиге на три позиции буква А в незашифрованном сообщении соответствует букве Г в зашифрованном сообщении, буква Б – букве Д, и.т.д. Контрольной фразе «ПРИШЕЛ УВИДЕЛ ПОБЕДИЛ» соответствует последовательность «ТУЛЫИО ЦЕЛЗИО ТСДИЗЛО»
Реализация алгоритма: при выполнении лабораторной работы с помощью пакета инженерных вычислений MATLAB 7.5.0 было создано приложение с графическим интерфейсом, позволяющее пользователю зашифровать любое текстовое сообщение на русском языке (пробелы, знаки препинания и прочие символы не учитывались), введенным в окно редактирования текста или загруженным из файла ‘text.txt’. Ключ шифрования (целое число, выражающее сдвиг по алфавиту) загружается из файла ‘key.txt’, в случае, если ключ не загружен, он считается равным 0. Результат сообщения можно сохранить в файл ‘out.txt’. Интерфейс приложения представлен на рисунке 1.
Результаты работы программы с различными исходными текстами, ключами и другими параметрами
Исходное сообщение |
Сдвиг |
Зашифрованное сообщение |
Жена Цезаря должна быть вне подозрений |
1 |
Зжоб Чжимса епмзоб вьуэ гож рпеписжойк |
Рубикон перейден. Жребий брошен |
14 |
Юбпцшьы зуюучтуы.Фюопцч пюьжуы |
И ты, Брут! |
8 |
Р ъг Йшыъ |
Гай Юлий Цезарь |
19 |
Цуъ сюыъ Йшъугл |
Ответы на контрольные вопросы
-
Какой шифр называется шифром подстановки?
Ответ: Подстановочным шифром называется шифр, который каждый символ открытого текста в шифротексте заменяет другим символом или группой символов. К подстановочным шифрам относятся шифр Цезаря, решетка Полибия и пр.
-
Какой шифр называется шифром перестановки?
Ответ: Шифр, преобразования из которого изменяют только порядок следования символов исходного текста, но не изменяют их самих, называется шифром перестановки
-
Какой шифр называется поворотной решеткой?
Ответ: Для использования шифра, называемого поворотной решеткой или решеткой Кардано, изготавливается трафарет из прямоугольного листа клетчатой бумаги размера 2m2k клеток. В трафарете вырезано mk клеток так, что при наложении его на лист чистой бумаги того же размера четырьмя возможными способами его вырезы полностью покрывают всю площадь листа. Буквы сообщения последовательно вписываются в вырезы трафарета (по строкам, в каждой строке слева направо) при каждом из четырех его возможных положений в заранее установленном порядке
-
Какой шифр называется шифром вертикальной перестановки?
Ответ: Шифром вертикальной перестановки (ШВП) называется широко распространенная разновидность шифра маршрутной перестановки. В нем используется прямоугольник, в котором сообщение вписывается обычным способом (по строкам слева направо). Выписываются буквы по вертикали, а столбцы при этом берутся в порядке, определяемом ключом.
-
К какому классу шифров относится шифр Цезаря?
Ответ: шифр Цезаря относится к простым одноалфавитным подстановочным шифрам. Слабость этого шифра состоит в том, что его можно вскрыть, перебрав очень малое число вариантов.
-
Что такое гамма и гаммирование?
Ответ: Принцип шифрования гаммированием заключается в генерации гаммы шифра (последовательности псевдослучайных чисел) с помощью датчика псевдослучайных чисел и наложении полученной гаммы на открытые данные обратимым образом
-
В чем заключается шифрование по Вижинеру?
Ответ: шифр Вижинера относится к полиалфавитным шифрам подстановки. Каждый символ открытого текста заменяется в соответствии с соответствующим ему символом ключа согласно таблице подстановок Виженера для каждого символа алфавита открытого текста и символа ключа
Выводы: при выполнении лабораторной работы были получены навыки в использовании простых симметричных шифров.
Приложение 1
Текст программы на языке среды инженерных разработок MATLAB
function varargout = caesar(varargin)
% CAESAR M-file for caesar.fig
% CAESAR, by itself, creates a new CAESAR or raises the existing
% singleton*.
%
% H = CAESAR returns the handle to a new CAESAR or the handle to
% the existing singleton*.
%
% CAESAR('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in CAESAR.M with the given input arguments.
%
% CAESAR('Property','Value',...) creates a new CAESAR or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before caesar_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to caesar_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help caesar
% Last Modified by GUIDE v2.5 28-Mar-2008 16:56:07
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @caesar_OpeningFcn, ...
'gui_OutputFcn', @caesar_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before caesar is made visible.
function caesar_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to caesar (see VARARGIN)
% Choose default command line output for caesar
handles.output = hObject;
% Update handles structure
handles.Data = '';
handles.Key = 0;
guidata(hObject, handles);
set(handles.cypherbutton, 'Enable', 'off');
% UIWAIT makes caesar wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = caesar_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
function text_Callback(hObject, eventdata, handles)
userstring = get(hObject, 'String');
handles.Data = userstring;
guidata(hObject,handles);
set(handles.cypherbutton, 'Enable', 'on')
% hObject handle to text (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of text as text
% str2double(get(hObject,'String')) returns contents of text as a double
% --- Executes during object creation, after setting all properties.
function text_CreateFcn(hObject, eventdata, handles)
% hObject handle to text (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in cypherbutton.
function cypherbutton_Callback(hObject, eventdata, handles)
clear newstrring workstring
ALPHABET = 'А':'Я';
alphabet = 'а':'я';
key = handles.Key;
workstring = handles.Data;
Upper = ismember(workstring, ALPHABET);
workstring = lower(workstring);
N = length(ALPHABET); n = length(alphabet); M = length(workstring);
for i = 1:M
j = find(alphabet == workstring(i));
if isempty(j) == 0
newstring(i) = alphabet(rem(j+key-1, n) + 1);
else
newstring(i) = workstring(i);
end
end
for i = 1:M
if Upper(i) == 1
j = find(alphabet == newstring(i));
newstring(i) = ALPHABET(j);
end
end
set(handles.Ctext, 'String', newstring);
set(hObject, 'Enable', 'off')
% hObject handle to cypherbutton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- The search Upper case function
% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
% --- Executes during object creation, after setting all properties.
function slider1_CreateFcn(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
% --- Executes on button press in loadtextbutton.
function loadtextbutton_Callback(hObject, eventdata, handles)
k = fopen('text.txt', 'rt')
textstring = '';
fileflag = 0;
while fileflag ~= -1
fileflag = fgetl(k);
textstring = strcat(textstring, fileflag);
end
set(handles.text, 'String', textstring);
set(handles.cypherbutton, 'Enable', 'on');
handles.Data = textstring;
guidata(hObject,handles);
fclose(k);
% hObject handle to loadtextbutton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in loadkeybutton.
function loadkeybutton_Callback(hObject, eventdata, handles)
k = fopen('key.txt', 'rt');
key = fgetl(k);
handles.Key = str2num(key);
guidata(hObject,handles);
fclose(k);
% hObject handle to loadkeybutton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in savetextbutton.
function savetextbutton_Callback(hObject, eventdata, handles)
k = fopen('out.txt', 'wt');
cryptstring = get(handles.Ctext, 'String');
fprintf(k, '%s', cryptstring);
fclose(k);
% hObject handle to savetextbutton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)