КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Простые шифры
Цель работы: Ознакомление с простыми симметричными криптографическими шифрами на основе методов подстановок, перестановок и гаммирования.
Задание: Разработка и программная реализация алгоритма шифрования Цезаря (линейный сдвиг по алфавиту)
Контрольный пример: пусть надо зашифровать фразу «ПРИШЕЛ УВИДЕЛ ПОБЕДИЛ» со сдвигом по алфавиту на 3 позиции вправо Русский алфавит считаем состоящим из 32 букв(без буквы Ё) АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ Тогда при сдвиге на три позиции буква А в незашифрованном сообщении соответствует букве Г в зашифрованном сообщении, буква Б – букве Д, и.т.д. Контрольной фразе «ПРИШЕЛ УВИДЕЛ ПОБЕДИЛ» соответствует последовательность «ТУЛЫИО ЦЕЛЗИО ТСДИЗЛО»
Реализация алгоритма: при выполнении лабораторной работы с помощью пакета инженерных вычислений MATLAB 7.5.0 было создано приложение с графическим интерфейсом, позволяющее пользователю зашифровать любое текстовое сообщение на русском языке (пробелы, знаки препинания и прочие символы не учитывались), введенным в окно редактирования текста или загруженным из файла ‘text.txt’. Ключ шифрования (целое число, выражающее сдвиг по алфавиту) загружается из файла ‘key.txt’, в случае, если ключ не загружен, он считается равным 0. Результат сообщения можно сохранить в файл ‘out.txt’. Интерфейс приложения представлен на рисунке 1.
Результаты работы программы с различными исходными текстами, ключами и другими параметрами
Ответы на контрольные вопросы
Ответ: Подстановочным шифром называется шифр, который каждый символ открытого текста в шифротексте заменяет другим символом или группой символов. К подстановочным шифрам относятся шифр Цезаря, решетка Полибия и пр.
Ответ: Шифр, преобразования из которого изменяют только порядок следования символов исходного текста, но не изменяют их самих, называется шифром перестановки
Ответ: Для использования шифра, называемого поворотной решеткой или решеткой Кардано, изготавливается трафарет из прямоугольного листа клетчатой бумаги размера 2m´2k клеток. В трафарете вырезано m´k клеток так, что при наложении его на лист чистой бумаги того же размера четырьмя возможными способами его вырезы полностью покрывают всю площадь листа. Буквы сообщения последовательно вписываются в вырезы трафарета (по строкам, в каждой строке слева направо) при каждом из четырех его возможных положений в заранее установленном порядке
Ответ: Шифром вертикальной перестановки (ШВП) называется широко распространенная разновидность шифра маршрутной перестановки. В нем используется прямоугольник, в котором сообщение вписывается обычным способом (по строкам слева направо). Выписываются буквы по вертикали, а столбцы при этом берутся в порядке, определяемом ключом.
Ответ: шифр Цезаря относится к простым одноалфавитным подстановочным шифрам. Слабость этого шифра состоит в том, что его можно вскрыть, перебрав очень малое число вариантов.
Ответ: Принцип шифрования гаммированием заключается в генерации гаммы шифра (последовательности псевдослучайных чисел) с помощью датчика псевдослучайных чисел и наложении полученной гаммы на открытые данные обратимым образом
Ответ: шифр Вижинера относится к полиалфавитным шифрам подстановки. Каждый символ открытого текста заменяется в соответствии с соответствующим ему символом ключа согласно таблице подстановок Виженера для каждого символа алфавита открытого текста и символа ключа
Выводы: при выполнении лабораторной работы были получены навыки в использовании простых симметричных шифров.
Приложение 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)
Дата добавления: 2015-05-07; Просмотров: 2239; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |