ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.02.2025
Просмотров: 259
Скачиваний: 0
СОДЕРЖАНИЕ
V0 v1 v2 v5 v6 v3 v4 v7 v8 v9 v10 (v0) (v1) (v7) (v8) (v9) (v3) (v2) (v4) (v5) (v6)
V0 v1 v2 v7 v9 v8 v1 v7 v2 v3 v4 v9 v5 v6 v10 v10 v5 v6 v3 v4
Симметричные криптосистемы. Функции криптосистем
Основные принципы создания интерфейса
Алгоритмы на деревьях Сортировка с прохождением бинарного дерева
Сортировка методом турнира с выбыванием
Представление выражений с помощью деревьев
5.Сравнительный анализ алгоритмов поиска: линейный, двоичный
Достоинства коммутации пакетов
Статья 1261. Программы для эвм
Статья 1296. Программы для эвм и базы данных, созданные по заказу
Статья 1297. Программы для эвм и базы данных, созданные при выполнении работ по договору
Билет 1.
1. Инкапсуляция, наследование, полиморфизм. Классы, объекты и отношения между ними. Диаграммы логического уровня.
В разделах указывается имя класса, его атрибуты (поля) и операции (методы). Таким образом, класс объединяет данные, представленные атрибутами и алгоритмы по их обработке. И то и другое скрыто от внешних пользователей – других объектов. Сокрытие данных и методов в качестве собственных ресурсов класса получило название инкапсуляции (in capsule).
Переопределение методов реализует идею полиморфизма, позволяющую изменять поведение метода от родителя к потомку
Потомки наследуют характеристики родительских классов и добавляют свои структуры данных и методы их обработки
Диаграммы физического уровня предназначены для описания физической организации системы. К ним относятся диаграмма реализации и развертывания.
Диаграммы логического уровня разделяют на структурные, описывающие статические сущности и динамические, описывающие поведенческие особенности информационной системы.
Названия структурных диаграмм соответствуют названиям основных групп сущностей, используемых при моделировании:
диаграммы классов – классам и интерфейсам;
диаграммы объектов – объектам;
диаграммы компонентов – компонентам;
диаграммы развертывания – узлам.
Поведенческие диаграммы разделяют в соответствии с основными способами моделирования динамики системы:
диаграммы прецедентов описывают функциональное поведение системы, видимое конечным пользователем;
диаграммы последовательности определяют временную упорядоченность сообщений;
диаграммы кооперации определяют структурную организацию объектов, обменивающихся сообщениями;
диаграммы состояний описывают изменение состояния объекта (системы) в ответ на получение событий;
диаграммы деятельности описывают последовательность передачи потоков управления от одних действий к другим.
Класс является центральным понятием объектной методологии. Он представляет множество предметов реального мира, связанных общностью структуры и поведением. Ими могут быть абстракции, являющиеся частью предметной области, либо классы, на которых основывается их реализация. С помощью классов можно описать любые программные, аппаратные либо чисто концептуальные сущности.
В UML класс служит для обозначения множества объектов, которые обладают одинаковой структурой, поведением и отношениями с объектами других классов. Графически класс изображается в виде прямоугольника (рис. 1.7), разделенного на отдельные секции (разделы).
Классы в UML визуализируются с помощью диаграммы классов, на которой представляют структуру классов и различные отношения (связи) между ними. При этом совокупность типов отношений между классов фиксирована и предопределена их семантикой. К базовым отношениям относятся отношение обобщения, ассоциации, зависимости и реализации. Каждое из них имеет собственное графическое представление, отражающее особенности взаимосвязи
Отношение обобщения связывает более общий элемент (родительский класс) с более частным (дочерний класс или подкласс) элементом(прям с незакр треуг)
Отношение ассоциации структурное отношение, устанавливает связь между объектами данных классов. Объекты, которым требуется взаимодействовать друг с другом, используют установленную связь для передачи сообщений(закр треуг)
Отношение агрегации(прям с незакр ромбом) имеет место между несколькими классами в случае, если один из классов представляет некоторую сущность, включающую в себя в качестве составных частей другие сущности. Отношение имеет определяющее значение для описания структуры сложных систем, поскольку применяется для представления системных взаимосвязей типа «часть-целое».
Частным случаем отношения агрегации является композиция(закр ромб), при которой составляющие части находятся внутри целого
Отношение зависимости является наиболее общей формой отношения, которое используется, когда изменение одного элемента модели может потребовать изменения другого зависимого от него элемента(пунктир со стрелкой)
Отношением реализации является отношением между двумя элементами, при котором один из них описывает некоторый сервис, а другой гарантирует его выполнение. Чаще всего реализация используется для определения отношений между интерфейсами и классами (или компонентами).(пунктир с незакр треуг)
В отличие от структурного подхода, где основное внимание уделяется функциональной декомпозиции, в объектном подходе предметная область разбивается на некоторое множество относительно независимых сущностей. Объект, или иначе экземпляр класса, как раз и является такой «реальностью». С позиций объектного моделирования описание класса и объекта эквивалентны, т.к. для определения множества схожих элементов, образующих класс, достаточно описать его типичного представителя, то есть объект.
2. Симметричные блочные криптоалгоритмы. Сеть Фейштеля.
Симметричные криптоалгоритмы. Для зашифровки и расшифровки сообщения используется один и тот же блок информации (ключ). Асимметричные криптоалгоритмы. Алгоритм таков, что для зашифровки сообщения используется один ("открытый") ключ, известный всем желающим, а для расшифровки – другой ("закрытый"), существующий только у получателя.
Основные принципы блочного симметричного шифрования.
Как уже было отмечено, блочные шифры обрабатывают кодируемое сообщение блоками из нескольких байт(4-32 байт), при этом блок открытого текста X преобразуется в блок шифротекста Y того же размера с использованием некоторого ключа шифрования Key:
Y = Encrypt(X, Key)
Процедура дешифрации выполняет обратное преобразование, используя тот же самый ключ:
X = Decrypt(Y, Key)
В общем случае процедуры Encrypt и Decrypt не совпадают, однако если последовательность действий при шифрации и дешифрации в точности совпадает, блочный шифр называется абсолютно симметричным. Для абсолютно симметричного шифра, очевидно, справедливо:
X = Encrypt((Encrypt(X, Key), Key)
Преобразования Encrypt и Decrypt трактуют блоки открытого и зашифрованного текста как целые числа и выполняет над ними ряд арифметических либо логических действий, основная задача которых – тщательно «перемешать» биты блока открытого текста между собой, а также связать их с битами используемого ключа шифрования для формирования блока закрытого текста. Для того, чтобы все шифрующее преобразование было обратимым, действия, его составляющие должны быть также обратимы (обратимость действия означает, что по его результату и одному из операндов можно получить второй операнд). В таблице 2.1 приведен список обратимых операций, использующихся в современных криптографических преобразованиях.
Среди операций, приведенных в таблице, необходимо выделить операции умножения и табличной подстановки, которые относятся к классу нелинейных и существенно затрудняют методы линейного криптоанализа блочных шифров.
Таблица 2.1
Основные обратимые операции |
|||
Название операции |
Графическое обозначение |
Формула преобразования |
Обратное преобразование |
Сложение |
|
X’ = X + V |
Вычитание |
Сложения по модулю 2 |
|
X’ = X ⊕ V |
Автообратима |
Умножение по модулю 2N+1 (N - размер блока) |
|
X’=(X·V) mod(2N+1) |
Сомножитель можно найти по алгоритму Евклида |
Циклические сдвиги вправо/влево |
|
X’ = X ROR V X’ = X ROL V |
Циклический сдвиг в обратном направлении |
Табличная подстановка |
|
X’ = SBox(X) |
Обратная подстановка |
Для преобразований параметров криптоалгоритмов, которые не требуют обратимости, используются необратимые операции, такие как логические сложение и умножение, арифметические сдвиги влево и вправо, получение остатка от целочисленного деления, умножение по модулю 2N.
В качестве второго операнда V, участвующего в операциях криптографических преобразований, могут использоваться:
фиксированные числовые константы;
значения, вычисленные из независимой части шифруемого блока (например, можно сложить младшую и старшую часть блока шифруемой информации);
материал ключа – блок информации, вычисленный исключительно на основе информации, хранящейся в ключе шифрования.
Одним из основных принципов структурного построения современных криптоалгоритмов является принцип итерирования. Его идея заключается в многократной, состоящей из нескольких циклов (или раундов), обработки одного блока открытого текста с использованием на каждом циклеспециального ключа раунда, вычисляемого на основе ключа шифрования. Количество циклов можно варьировать из соображений криптостойкости и эффективности реализации алгоритма: увеличение количества циклов приводит к повышению стойкости шифра, но увеличивает время шифрации и потребляемые вычислительные ресурсы. Подобные циклические структуры принято называть сетями, и большинство современных блочных шифров построены с использованием сетевой архитектуры.
Популярной сегодня является сеть Фейштеля, схема которой представлена на рис.2.4.
При
шифровании блок открытого текста
разбивается на две равные части - левую
и правую. На каждом цикле одна из частей
подвергается преобразованию при помощиобразующей
функции F и вспомогательного ключа ki,
полученного из исходного ключа. Результат
преобразования складывается по модулю
2 с другой частью, после чего части
меняются местами. Преобразования на
каждом цикле идентичны и лишь после
последнего раунда не выполняется
перестановка частей блока.
Рис. 2.4. Схема сети Фейштеля на М раундов
Достоинством сети Фейштеля является то, что дешифрация выполняется той же последовательностью преобразований, лишь порядок следования вспомогательных ключей меняется на обратный. Это достигается за счет автообратимости операции суммы по модулю 2, смешивающей части блока между собой.
Если размер блока шифрования криптоалгоритма слишком велик, возможны модификации сети Фейштеля с 4 ветвями, один из вариантов которых приведен на рис. 2.5.
Рис.
2.5. Сеть Фейштеля с 4 ветвями
3. Построить программу на языке С++ для работы со структурой Дата. Программа должна обеспечивать простейшие функции для работы с данными структуры: увеличение/уменьшение на 1 день, ввод значений, вывод значений.
unit STR_Date;
interface
Uses SysUtils;
type TUserDate = class
private
fNumber:Word;
fMonth:word;
fYear:Integer;
public
Function SetUserDate(ANumber:Word;AMonth:Word;AYear:Integer):Boolean;
Function GetUserDate:String;
Function ModifyDate(AModify:Integer):String;
end;
implementation
Function TUserDate.SetUserDate;
Begin
If AYear>0 Then
Begin
fYear:=AYear;
if (AMonth >0) and (AMonth<=12) Then
Begin
fMonth:=AMonth;
fNumber:=0;
if ((fMonth=1)or(fMonth=3)or(fMonth=5)or(fMonth=7)or(fMonth=8)or(fMonth=10)or(fMonth=12))and(ANumber>0)and(ANumber<=31) Then
fNumber:=ANumber;
if ((fMonth=4)or(fMonth=6)or(fMonth=9)or(fMonth=11))and(ANumber>0)and(ANumber<=30) Then
fNumber:=ANumber;
if (fMonth=2) Then
if (fYear mod 4 = 0) Then
if (ANumber>0) and (ANumber<=29) Then fNumber:=ANumber
else
if (ANumber>0) and(ANumber<=28) Then fNumber:=ANumber;
if fNumber<>0 Then Result:=True else Result:=False;
end
else Result:=False;
end
else
Result:=False;
End;
Function TUserDate.GetUserDate;
Var str,Itog:String;
Begin
Itog:='';
str:=IntToStr(fNumber);
If length(str)=1 Then Itog:=Itog+'0';
Itog:=Itog+str+'.';
str:=IntToStr(fMonth);
if length(str)=1 Then Itog:=Itog+'0';
Itog:=Itog+str+'.';
Itog:=Itog+IntToStr(fYear);
Result:=Itog
End;
//Данная функция очень утрирована
Function TUserDate.ModifyDate;
Begin
fNumber:=fNumber+ AModify;
Result:=GetUserDate;
End;
end.
Тело программы
program Zad_17;
{$APPTYPE CONSOLE}
uses
SysUtils,
STR_Date in 'STR_Date.pas';
var UsDate:TUserDate;
Y:Integer;
N,M:Word;
F:Boolean;
begin
repeat
Write('Vvedite YEAR = ');
Readln(Y);
Write('Vvedite MONTH = ');
Readln(M);
Write('Vvedite Number = ');
Readln(N);
UsDate:=TUserDate.Create;
F:=UsDate.SetUserDate(N,M,Y);
if F=False Then Writeln('ERROR Date');
Until F;
Writeln('Vvedena Date =>> ',UsDate.GetUserDate);
Write('Vvedite znachenie izmenenij = ');
Readln(Y);
Writeln('New date =>> ',UsDate.ModifyDate(Y));
Readln;
{ TODO -oUser -cConsole Main : Insert code here }
end.
Билет 2
1. Объявление и реализация классов на языке Паскаль.
Для объявления классов (объектных типов) используется зарезервированное слово class. Определим некоторый класс графических примитивов TFigure следующим образом:
TFigure = class
fColor: Byte;
fThickness: Byte;
fCanvas: TCanvas;
procedure SetColor(Value: Byte);
procedure SetThickness(Value: Byte);
procedure PrepareCanvas;
end;
По принятому соглашению имена классов начинаются с заглавной буквы «T», имена полей данных начинаются с буквы «F», и поля класса объявляются до методов. Класс объединяет данные, представленные атрибутами (полями) и алгоритмы (методы) по их обработке.