На бирже курсовых и дипломных проектов можно найти образцы готовых работ или получить помощь в написании уникальных курсовых работ, дипломов, лабораторных работ, контрольных работ, диссертаций, рефератов. Так же вы мажете самостоятельно повысить уникальность своей работы для прохождения проверки на плагиат всего за несколько минут.

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Разработка программных средств шифрования и расшифрования файлов на основе многоалфавитной подстановки (для ОС Windows)

Информация:

Тип работы: курсовая работа. Добавлен: 05.06.2012. Сдан: 2010. Страниц: 12. Уникальность по antiplagiat.ru: < 30%

Описание (план):


Курсовая  работа 

Дисциплина:
Криптографические методы и средства обеспечения информационной безопасности 

Тема  работы:
«Разработка программных средств шифрования и расшифрования файлов на основе многоалфавитной подстановки (для ОС Windows)» 
 

Москва, 2009
 

Содержание
 

Введение

 
    Криптография (от греч. ??????? — cкрытый и ????? — пишу) — наука о математических методах обеспечения конфиденциальности (невозможности прочтения информации посторонним) и аутентичности (целостности и подлинности авторства, а также невозможности отказа от авторства) информации.
    С зарождением человеческой цивилизации возникла необходимость передачи информации одним людям так, чтобы она не становилась известной другим. Сначала люди использовали для передачи сообщений исключительно голос и жесты. С возникновением письменности задача обеспечения секретности и подлинности передаваемых сообщений стала особенно актуальной. Поэтому именно после возникновения письменности появилось искусство тайнописи, искусство «тайно писать» – набор методов, предназначенных для секретной передачи записанных сообщений от одного человека другому.
    Человечество  изобрело большое число способов секретного письма, например, симпатические  чернила, которые исчезают вскоре после  написания ими текста или невидимы с самого начала, «растворение» нужной информации в сообщении большего размера с совершенно «посторонним» смыслом, подготовка текста при помощи непонятных знаков. Криптография возникла именно как практическая дисциплина, изучающая и разрабатывающая способы шифрования сообщений, то есть при передаче сообщений – не скрывать сам факт передачи, а сделать сообщение недоступным посторонним. Для этого сообщение должно быть записано так, чтобы с его содержимым не мог ознакомиться никто за исключением самих корреспондентов.
    Появление в середине ХХ столетия первых ЭВМ  кардинально изменило ситуацию – практическая криптография сделала в своем развитии огромный скачок и термин «криптография» далеко ушел от своего первоначального значения – «тайнопись», «тайное письмо». Сегодня эта дисциплина объединяет методы защиты информационных взаимодействий совершенно различного характера, опирающиеся на преобразование данных по секретным алгоритмам, включая алгоритмы, использующие секретные параметры. Термин «информационное взаимодействие» или «процесс информационного взаимодействия» здесь обозначает такой процесс взаимодействия двух и более субъектов, основным содержанием которого является передача и/или обработка информации. Базовых методов преобразования информации, которыми располагает современная криптография немного, но все они являются «кирпичами» для создания прикладных систем.
 

     На сегодняшний день криптографические  методы применяются для идентификации  и аутентификации пользователей, защиты каналов передачи данных от навязывания  ложных данных, защиты электронных  документов от копирования и подделки.
    Современная криптография включает в себя четыре крупных раздела:
    Симметричные криптосистемы.
    Криптосистемы с открытым ключом.
    Системы электронной подписи.
    Управление ключами.
    В симметричных криптосистемах и для  шифрования, и для дешифрования используется один и тот же ключ.
    В системах с открытым ключом используются два ключа - открытый и закрытый, которые математически связаны  друг с другом. Информация шифруется  с помощью открытого ключа, который  доступен  всем желающим, а расшифровывается с помощью закрытого ключа, известного только получателю сообщения.
    Термины распределение ключей и управление ключами относятся к процессам системы обработки информации, содержанием которых является составление и распределение ключей между пользователями.
    Электронной (цифровой) подписью называется присоединяемое к тексту его криптографическое  преобразование, которое позволяет  при получении текста другим пользователем  проверить авторство и подлинность  сообщения.
 

Глава 1. Симметричные криптосистемы

 
    Все многообразие существующих криптографических методов можно свести к следующим классам преобразований: 


 

 

Рис. №1
    Подстановка - наиболее простой вид преобразований, заключающийся в замене символов исходного текста на другие (того же алфавита) по более или менее сложному правилу. Для обеспечения высокой криптостойкости требуется использование больших ключей.
    Перестановки - несложный метод криптографического преобразования. Используется, как правило, в сочетании с другими методами.
    Гаммирование - этот метод заключается в наложении на исходный текст некоторой псевдослучайной последовательности, генерируемой на основе ключа. 
    Блочные шифры  собой последовательность (с возможным повторением и чередованием) основных методов преобразования, применяемую к блоку (части) шифруемого текста. Блочные шифры на практике встречаются чаще, чем “чистые” преобразования того или иного класса в силу их более высокой криптостойкости. Российский и американский стандарты шифрования основаны именно на этом классе шифров.
    Рассмотрим  разнообразные системы подстановок.
    В подстановочных шифрах буквы исходного  сообщения заменяются на подстановки. Замены в криптотексте расположены  в том же порядке, что и в  оригинале. Если использование замен  постоянно на протяжении всего текста, то криптосистема называется одноалфавитной (моноалфавитной). В многоалфавитных системах использование подстановок меняется в различных частях текста.

  1. Моноалфавитные подстановки

 
Шифр  Цезаря
    Юлий  Цезарь повествует о посылке зашифрованного сообщения Цицерону. Используемая при  этом система подстановок была одноалфавитной, но не являлась системой Цезаря: латинские буквы заменялись на греческие способом, который не был ясен из рассказа Цезаря. Информация о том, что Цезарь действительно использовал систем у Цезаря, пришла от Светония.
    В шифре Цезаря каждая буква замещается на букву, находящуюся k символами правее по модулю равному количеству букв в алфавите. (Согласно Светонию у Цезаря k=3 n=50)

    Очевидно, что обратной подстановкой является
 

Аффинная  криптосистема
    Обобщением  системы Цезаря является аффинная криптосистема. Она определяется двум числами a и b, где 0<=a,b<=n-1. n - как и раньше, является мощностью алфавита. Числа a и n должны быть взаимно просты.
Соответствующими  заменами являются:

    Обратную  замену также можно получить, просто поменяв местами строки в таблице замен.
    Взаимная  простота a и n необходима для биективности отображения, в противном случае возможны отображения различных  символов в один и неоднозначность  дешифрирования.
 

Шифр  Полибия
    Система Цезаря не является старейшей. Возможно, что наиболее древней из известных является система греческого историка Полибия, умершего за 30 лет до рождения Цезаря. Его суть состоит в следующем: рассмотрим прямоугольник, часто называемый доской Полибия. 
  Рис.№2
    Каждая  буква может быть представлена парой букв, указывающих строку и столбец, в которых расположена данная буква. Так представления букв В, Г, П, У будут АВ, АГ, ВГ, ГБ соответственно, а сообщение ПРИКЛАДНАЯ МАТЕМАТИКА зашифруется как ВГВДБВБДБЕАААДВБААЕБЕЕВАААГААЕВАААГАБВБДААЕЕ
Шифр  Цезаря с ключевым словом
    В данной разновидности шифра Цезаря ключ задается числом k (0<=k<=n-1) и коротким ключевым словом или предложением. Выписывается алфавит, а под ним, начиная с k-й позиции, ключевое слово. Оставшиеся буквы записываются в  алфавитном порядке после ключевого слова. В итоге мы получаем подстановку для каждой буквы. Требование, чтобы все буквы ключевого слова были различными не обязательно - можно записывать ключевое слово без повторения одинаковых букв. Количество ключей в системе Цезаря с ключевым словом равно n!. 

Другие  моноалфавитные криптосистемы
    Естественным  математическим обобщением аффинных систем являются полиномиальные криптосистемы: вместо линейной функции выбирается произвольный многочлен. Но полиномиальные системы малоинтересны с точки зрения криптографии, так как главным для аффинных систем является простота управления ключом - ключ всегда состоит из последовательности 26 букв и однозначно определяется парой чисел. Представление же в виде полинома может быть слишком сложным.
    Более эффективны обобщения подстановки Цезаря - шифр Хилла(Hill) и шифр Плэйфер (Playfair, в переводе "честная игра"). Они основаны на подстановке не отдельных символов, а 2-грамм (шифр Плэйфер) или n-грамм (шифр Хилла).
    При более высокой криптостойкости  они значительно сложнее для реализации и требуют достаточно большого количества ключевой информации. 

Методы  вскрытия одноалфавитных систем
    При своей простоте в реализации одноалфавитные системы легко уязвимы. Определим  количество различных систем в аффинной системе. Каждый ключ полностью определен парой целых чисел a и b, задающих отображение ax+b. Для а существует j(n) возможных значений, где j(n) - функция Эйлера, возвращающая количество взаимно простых чисел с n, и n значений для b, которые могут быть использованы независимо от a, за исключением тождественного отображения (a=1 b=0), которое мы рассматривать не будем. Таким образом получается j(n)*n-1 возможных значений, что не так уж и много: при n=33 в качестве a могут быть 20 значений( 1, 2, 4, 5, 7, 8, 10, 13, 14, 16, 17, 19, 20, 23, 25, 26, 28, 29, 31, 32), тогда общее число ключей равно 20*33-1=659. Перебор такого количества ключей не составит труда при использовании компьютера. Но существуют методы, упрощающие этот поиск и которые могут быть использованы при анализе более сложных шифров. 

Частотный анализ
    Одним из таких методов является частотный  анализ. Распределение букв в криптотексте сравнивается с распределением букв в алфавите исходного сообщения. Буквы с наибольшей частотой в  криптотексте заменяются на букву с наибольшей частотой из алфавита. Вероятность успешного вскрытия повышается с увеличением длины криптотекста. Существуют множество различных таблиц о распределении букв в том или ином языке, но, ни одна из них не содержит окончательной информации - даже порядок букв может отличаться в различных таблицах. Распределение букв очень сильно зависит от типа теста: проза, разговорный язык, технический язык и т.п.

    Таблица №1
    Хотя  нет таблицы, которая может учесть все виды текстов, но есть вещи общие для всех таблиц, например, в английском языка буква E всегда возглавляет список частот, а T идет на второй позиции. A и O почти всегда третьи. Кроме того девять букв английского языка E, T, A, O, N, I, S, R, H всегда имеют частоту выше, чем любые другие. Эти девять букв заполняют примерно 70% английского текста. Ниже приведены соответствующие таблицы для различных языков.

    Таблица №2
    Заметим, что буквы I, N, S, E, A (И, Н, С, Е, А) появляются в высокочастотном классе каждого  языка! Также есть таблицы частоты появления букв в начале и конце слова.
 

     Простейшая защита против атак, основанных на подсчете частот, обеспечивается в  системе омофонов (HOMOPHONES) - однозвучных подстановочных шифров, в которых один символ открытого текста отображается на несколько символов шифротекста, их число пропорционально частоте появления буквы. Шифруя букву исходного сообщения, мы выбираем случайно одну из ее замен. Следовательно, простой подсчет частот ничего не дает криптоаналитику. Однако доступна информация о распределении пар и троек букв в различных естественных языках. Криптоанализ, основанный на такой информации, будет более успешным. 

Метод полосок
    Для шифра Цезаря имеется более простой  способ расшифровки - так называемый метод полосок. На каждую полоску  наносятся по порядку все буквы алфавита. В криптограмме берется некоторое слово. Полоски прикладываются друг к другу так, чтобы образовать данное слово. Двигаясь вдоль полосок находится осмысленное словосочетание, которое и служит расшифровкой данного слова, одновременно находится и величина сдвига.

Рис. №3
 

2. Многоалфавитные подстановки

 
    Полиалфавитные  подстановочные шифры были изобретены Лином Баттистой (Lean Battista) в 1568 году. Основная идея многоалфавитных систем состоит в том, что на протяжении всего текста одна и та же буква может быть зашифрована по-разному. Т.е. замены для буквы выбираются из многих алфавитов в зависимости от положения в тексте. Это является хорошей защитой от простого подсчета частот, так как не существует единой маскировки для каждой буквы в криптотексте. В данных шифрах используются множественные однобуквенные ключи, каждый из которых используется для шифрования одного символа открытого текста. Первым ключом шифруется первый символ открытого текста, вторым – второй, и т.д. После использования всех ключей они повторяются циклически. 

Шифр  Вернама
    Шифр  Вернама, или одноразовый блокнот, был изобретен в 1917 году Мейджором  Джозефом Моборном (Major Joseph Mauborn) и Гильбертом Вернамом (Gilbert Vernam) из AT&T (American Telephone & Telegraph). В классическом понимании одноразовый блокнот является большой неповторяющейся последовательностью символов ключа, распределенных случайным образом. Первоначально это была одноразовая лента для телетайпов. Отправитель использовал каждый символ ключа для шифрования только одного символа открытого текста. Шифрование представляет собой сложение по модулю n (мощность алфавита) символа открытого текста и символа ключа из одноразового блокнота.
Каждый  символ ключа используется только один раз и для единственного сообщения, иначе даже если использовать блокнот размером в несколько гигабайт, при получении криптоаналитиком нескольких текстов с перекрывающимися ключами он сможет восстановить исходный текст. Он сдвинет каждую пару шифротекстов относительно друг друга и подсчитает число совпадений в каждой позиции. Если шифротексты смещены правильно, соотношение совпадений резко возрастет. С этой точки зрения криптоанализ не составит труда. Если же ключ не повторяется и случаен, то криптоаналитик, перехватывает он тексты или нет, всегда имеет одинаковые знания. Случайная ключевая последовательность, сложенная с неслучайным открытым текстом, дает совершенно случайный криптотекст, и никакие вычислительные мощности не смогут это изменить.
В реальных системах сначала подготавливают две одинаковые ленты со случайными цифрами ключа. Одна остается у отправителя, а другая передается «неперехватываемым» образом например, курьером с охраной, законному получателю. Когда отправитель хочет передать сообщение, он сначала преобразует его в двоичную форму и помещает в устройство, которое к каждой цифре сообщения прибавляет по модулю два цифры, считанные с ключевой ленты. На принимающей стороне кодированное сообщение записывается и пропускается через машину, похожую на устройство, использованное для шифрования, которое к каждой двоичной цифре сообщения прибавляет (вычитает, так как сложение и вычитание по модулю два эквивалентны) по модулю два цифры, считанные с ключевой ленты, получая, таким образом, открытый текст. При этом, естественно, ключевая лента должна продвигаться абсолютно синхронно со своим дубликатом, используемым для зашифрования.

Рис. №4
    Главным недостатком данной системы является то, что для каждого бита переданной информации должен быть заранее подготовлен  бит ключевой информации, причем эти биты должны быть случайными. При шифровании большого объема данных это является серьезным ограничением. Поэтому данная система используется только для передачи сообщений наивысшей секретности. По слухам "горячая линия" между США и СССР шифровалась с помощью одноразового блокнота. Многие сообщения советских шпионов были зашифрованы с использованием одноразовых блокнотов. Эти сообщения нераскрыты сегодня, и не будут раскрыты никогда (если не найдется способа вернуться в прошлое и достать эти блокноты):

Рис. №5
Чтобы обойти проблему предварительной передачи секретного ключа большого объема, инженеры и изобретатели придумали  много остроумных схем генерации  очень длинных потоков псевдослучайных  цифр из нескольких коротких потоков  в соответствии с некоторым алгоритмом. Получателя шифрованного сообщения при этом необходимо снабдить точно таким же генератором, как и у отправителя. Но такие алгоритмы добавляющих регулярности в шифротекст, обнаружение которых может помочь аналитику дешифровать сообщение. Один из основных методов построения подобных генераторов заключается в использовании двух или более битовых лент, считанные с которых данные побитно складываются для получения "смешанного" потока. Например, простая одноразовая лента может быть заменена двумя циклическими лентами, длины которых являются простыми или взаимно простыми числами. Так как в этом случае длины лент не имеют общих множителей, полученный из них поток имеет период повторения, равный произведению их длин: две ленты, имеющие длину 1000 и 1001 соответственно, дают в результате составной поток с периодом 1000x1001=1001000 цифр. Ленты циркулируют через сумматор, который складывает по модулю два считанные с них цифры. Выход сумматора служит ключом, используемым для зашифрования сообщения. Поэтому важно, чтобы составной поток превышал по длине все вместе взятые сообщения, которые могут быть переданы за разумный период времени.
Поскольку побитовый сумматор является линейным устройством, он изначально криптографически слаб, но может быть усилен большим количеством различных способов. Другой способ - указание местонахождения ключа как места в книге, например, Дональд Э. Кнут Искусство Программирования Том 2. Получисленные алгоритмы. Третье издание. стр. 83, 3-й абзац. Все символы, входящие в алфавит, начиная с этого места, используются как одноразовый ключ для какого-либо сообщения. Но в данном случае ключ не будет случайным и может быть использована информация о частотах распределения букв.
    Как не удивительно, но класс шифров Вернама - единственный класс шифров, для которого может быть доказана (и была доказана Шенноном) невскрываемость в абсолютном смысле этого термина.
Шифр  Виженера
    Одной из старейших и наиболее известных  многоалфавитных криптосистем является система Виженера, названная в честь французского криптографа Блейза Виженера(Vigenere), в М.Н.Аршинов, Л.Е.Садовский Коды и математика данный шифр назван шифром Тритемиуса. Этот метод был впервые опубликован в 1586 году. В данном шифре ключ задается набором из d букв. Такие наборы подписываются с повторением под сообщением, а, затем, полученную последовательность складывают с открытым текстом по модулю n(мощность алфавита). Т.е. получается следующая формула:

    Также букву шифротекста можно находить из следующей таблицы, как пересечение столбца, определяемого буквой открытого текста, и строки, определяемой буквой ключа:

    Таблица №3
    В частном случае, при d=1, получаем шифр Цезаря.
    Другой  разновидностью шифра Виженера, имеющей  легкозапоминаемый квадрат подстановок, является шифр Бофорта(Beaufort, в некоторой литературе читается как Бьюфорт), названный в честь адмирала сэра Френсиса Бофорта - создателя шкалы для определения скорости ветра. Его строками являются строки квадрата Виженера, записанные в обратном порядке, а первая и последняя строки поменяны местами:
      
    Таблица №4
    Формулой  преобразования будет:

 

     В обоих случаях обратная подстановка  легко определяется из квадрата, или  по формулам

соответственно.
    Повторное применение двух или более шифров Виженера будет называться составным шифром Виженера.
Оно имеет уравнение
,
где ki + li + ... + si вообще говоря, имеют различные  периоды dk, dl, ..., ds соответственно. Период их суммы ki + li + ... + si будет наименьшим общим кратным отдельных периодов.
    Если  ключ k не повторяется, то получится шифр Вернама. Если в качестве ключа используется текст, имеющий смысл, то имеем шифр "бегущего ключа". 

Шифр  Виженера с перемешанным один раз алфавитом
    Такой шифр представляет собой простую  подстановку с последующим применением  шифра Виженера:
 

Шифр c автоключом
    Дальнейшей  модификацией системы Виженера является система шифров с автоключом (auto-key), приписываемая математику XVI в. Дж. Кардано, AUTOCLAVE. Шифрование начинается с помощью "первичного ключа" (который является настоящим ключом в нашем смысле) и продолжается с помощью сообщения или криптограммы, смещенной на длину первичного ключа, затем производится сложение по модулю, равному мощности алфавита. Например:
 
Рис. №6
    Легальная расшифровка не представляет труда: по первичному ключу получается начало сообщения, после чего найденная часть исходного сообщения используется в качестве ключа.
    В другом варианте данной системы в  качестве ключа служит текст сообщения, зашифрованный с помощью ключа  по системе Виженера. Но данный криптоалгоритм слабее оригинального. 

Методы  анализа многоалфавитных  систем
    Если  ключ повторяется периодически и  период известен, то криптоанализ данных систем может быть сведен к криптоанализу  одноалфавитных систем. Пусть период равен 5. Буквы упорядочиваются по столбцам следующим образом:

    Два появления одной буквы в одном  столбце представляют одну букву  сообщения. Поэтому можно расшифровать каждый столбец простым подсчетом  частот. 

Метод Казиски
    Примерно  в 1860г. немецким криптоаналитиком Ф.У.Казиски (Kasisky) был изобретен метод вскрытия систем с неизвестным периодом с помощью обнаружения одинаковых слов в криптотексте. Допустим, слово ЫВАП появляется дважды с 13 буквами между двумя появлениями. Это может быть случайно, а может означать тот факт, что одинаковая часть сообщения зашифрована начиная с той же позиции ключа. Тогда расстояние между двумя Ы равно 16 и кратно длине ключа. поэтому возможная длина ключа равна 2, 4, 8, 16. Когда получается несколько таких предположений о длине ключа, некоторые из которых могут оказаться неправильными, то можно будет сделать верное предположение о длине ключа. Более длинные повторяющиеся слова предпочтительнее. Также преимуществом для криптоаналитика является повторение слов более одного раза.
 

Криптоанализ  систем с автоключом
    Криптоанализ  измененной системы AUTOCLAVE проще, чем  для первоначальной. Аналитику достаточно только угадать или найти длину  ключа d. Тогда он может взять первую и d+1 буквы из криптотекста. Тогда, по построению, для d+1 буквы ключом является первая, следовательно, из квадрата Виженера можно определить букву, стоящую на d+1 месте в открытом тексте. Подобным образом может быть раскрыт весь текст сообщения, кроме первых d букв. Первая версия данной системы, где ключом служит сдвиг исходного сообщения, неуязвима против такой простой криптоатаки.
    Для раскрытия первой версии AUTOCLAVE может  быть использован метод Казиски. Пусть слово ИЛИ появляется дважды в исходном сообщении и расстояние между этими появлениями равно  удвоенному смещению. Тогда найдется последовательность из трех букв, например КАН, расположенная посредине между появлениями ИЛИ. Таким образом, имеется следующая часть исходного сообщения: ... ИЛИ ... КАН ... ИЛИ ...
    В процессе шифрования получаем:

Рис. №7
    Таким образом, ЬЛЩ появляется дважды в криптотексте и расстояние между ними в точности равно периоду, в то время как для системы Виженера данный метод давал числа лишь кратные периоду. После того, как смещение известно, ключевое слово находится с помощью исчерпывающего поиска, основанного на подсчете частот индивидуальных букв. При получении ключевого слова все становится очевидным. Имеется n возможных набором для первой буквы ключевого слова. Когда этот выбор произведен, из него определяется первая буква сообщения, которая в свою очередь, определяет d+1, и так далее. Поэтому выбор первой буквы дает 1, d+1, 2d+1, ... буквы сообщения. Варианты, приводящие к последовательностям невозможных распределений, могут быть отброшены. Таки способом находится первая буква. Остальные d-1 букв определяются аналогично.
 

Глава 2. Программная реализация многоалфавитной подстановки

 
Текст программы
#include <iostream>
#include <conio>
#include <windows.h> //для возможности работы с  русским текстом
#include <string>
#include <cstdlib>
#include <math> 

using namespace std; //используем стандартное пространство имён
//uni будет  использоваться в программе для  обозначения типа данных unsigned int
typedef unsigned int uni; 

//------------------------------------------------------------------------------
//Класс  строки представленной в виде двоичного кода для русского алфавита
//------------------------------------------------------------------------------
class cystr
{
public:
  int dem;    //размерность строки
  int **s_c;  //шифрованная строка в  двоичном коде
  int **open; //открытая строка в двоичном коде
  static string alph; //статическая поле класса (алфавит) (string - тип данных)
cystr ();
  cystr (int **, int);
  ~cystr();
}; 

string cystr::alph = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
абвгдежзийклмнопрстуфхцчшщъыьэюя";
cystr::cystr(){}
//перегруженный  конструктор класса
cystr::cystr(int **p, int n)
{
  dem = n;
  s_c = new int *[n];
  open = new int *[n];
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.