[Udemy] Алгоритмы шифрования на C# (Евгений Волосатов)

Цена:
257.4
doneМного
doneЗаканчивается
highlight_offНет в наличии
notifications_none
Уведомить

[?IMG]?

Перестановочный шифр, полиалфавитный и поточный шифр Виженера, алгоритм RSA и ключевой обмен Диффи-Хеллмана
?
Чему вы научитесь
Узнаете принципы работы шифровальных алгоритмов:
Перестановочный шифр
Полиалфавитный шифр Виженера
Поточный шифр Виженера
Алгоритм RSA
Ключевой обмен Диффи-Хеллмана

Требования
Основы математики
Основы языка программирования C#

Описание
Подробно разбираем разные алгоритмы шифрования и пишем на C# лабораторные программы с демонстрацией Перестановочного шифра, полиалфавитного шифра Виженера, поточного шифра Виженера, а также ключевой обмен Диффи-Хеллмана и алгоритм шифрования RSA. Для каждого алгоритма с нуля создаётся рабочая программа с подробным описанием каждого шага.
После прохождения этого курса вы лучше поймёте принципы работы шифровальных программ и сможете применять эти алгоритмы в своих программах.

Для кого этот курс?
Для студентов для написания лабораторной работы
Для инженеров и программистов

Что входит в курс?
6,5 часов видео

Материалы курса
26 лекций - 06:38:38

Перестановочный шифр - 02:06:58

Введение - 07:47
На этом уроке мы обсудим, чем отличается шифрование от кодирования и познакомимся с перестановочным шифром.
Примечание:
Так получилось, что в настройках программы записи была поставлена галочка записи со встроенной вебкамеры, поэтому часть видео закрыта логотипом. Прошу прощения.
Самостоятельное задание:
1. Написать, чем отличается шифрование от кодирования.
2. Зашифровать указанную в конце урока фразу.

Форма - 17:20
На этом уроке мы создадим пользовательскую форму для запроса данных и отображения результатов шифрования.
Самостоятельное задание:
1. Создать левую часть формы.
2. Продублировать для правой части.
3. Переименовать текстовые поля, кнопки и сетки.

Первый этап шифровки - 15:07
На этом уроке мы напишем функцию для заполнения первой сетки.
Самостоятельное задание:
1. Создать обработчик кнопки 'Шифровать'.
2. Добавить проверки на исходные данные.
3. Создать все столбцы.
4. Заполнить все строчки.
5. Проверить работу программы.

Алфавитный ключ - 12:04
На этом уроке мы напишем функцию getAbc(), которая будет сортировать буквы ключа по алфавиту. Причём перестановки делать вместе с целым массивом.
Самостоятельное задание:
1. Создать функцию getAbc().
2. Поместить результат её работы в текстовое поле textKeyAbc.

Второй этап шифровки - 14:18
На этом уроке мы допишем шифрование текста. Расставим столбцы в нужном порядке, скопируем столбцы из первой таблицы, выпишем все буквы в результат, и получим готовую шифровальную программу! Останется только научиться расшифровывать.
Дополнительное задание. Расшифровать сообщение:
ДМПЯЕ СО СЕ Л ЧПЬВАИЕО.ТНЛ.БУЁТЯЕЯУ
Ключ: ФОРМУЛИСТ
Самостоятельное задание:
1. Создать столбцы второй сетки.
2. Скопировать их в нужном порядке.
3. Сформировать шифровку.
4. Проверить работу программы.
5. Расшифровать сообщение и написать ответ.

Первый этап дешифровки - 12:23
На этом уроке мы начнём дешифровку. Для этого нужно выполнить действие, обратное последнему при шифровании.
Самостоятельное задание:
1. Написать функцию fillGrid3().
2. Отсортировать буквы ключа.
3. Создать столбцы по отсортированному ключу.
4. Разместить шифрованное сообщение в клетки сетки.

Второй этап дешифровки - 11:34
На этом уроке мы закончим дешифровку и создание нашей программы.
Самостоятельное задание:
1. Написать функцию fillGrid4().
2. Создать столбцы.
3. Скопировать текст из 3-й сетки.
4. Сформировать дешифровку по строчкам 4-й сетки.
5. Протестировать программу и порадоваться результату.
6. Провести эксперименты и опубликовать интересные результаты.

Рефакторинг - 36:25
На этом уроке мы порефакторим код нашей программы. Выделим в метод повторяющийся код формирования столбцов, упростим алгоритм сортировки, переделаем проверку на ошибки и т.д.
Рекомендуется сначала просто посмотреть этот урок. А потом по памяти сделать те изменения, которые пожелаете. Напишите, что ещё можно было бы порефакторить.
Самостоятельное задание:
1. Посмотреть видеоурок.
2. Сделать рефакторинг по желанию.
3. Написать, что вы сделали и что можно ещё сделать.

Полиалфавитный шифр Виженера - 01:16:21

Описание алгоритма - 05:27
Мы начинаем создание ещё одной шифровальной программы: 'полиалфавитный шифр Виженера'.
Для начала зашифруйте фразу
ФОРМУЛАПРОГРАММИСТА ,
используя ключ «СИ».
Самостоятельное задание:
1. Прослушать урок.
2. Зашифровать фразу и написать результат.

Форма - 16:48
На этом уроке мы создадим форму и разместим на ней все необходимые визуальные компоненты. Дайте всем компонентам адекватные имена. Список всех имён можно увидеть в конце урока.
Самостоятельное задание:
1. Создать форму.
2. Разместить все компоненты.
3. Дать им всем осмысленные названия.
4. Раскрыть список FormPoliVizhenera со всеми именами.
5. Приложить скриншот дизайнера со списком всех компонентов.

Ключевая таблица - 18:13
На этом уроке мы наконец-таки приступим к созданию алгоритма. Мы напишем функцию fillKeyTable (string key), которая создаст таблицу для де/шифрования для указанного ключа.
Самостоятельное задание:
1. Написать функцию fillKeyTable (string key).
2. Протестировать её работу.
3. Сделать скриншот.

Шифровка - 18:58
На этом уроке мы завершим алгоритм шифрования. Мы напишем функцию fillGrid1(), которая заполняет первую сетку и попутно формирует зашифрованное сообщение. Расшифровать фразу 'Ч-ДЬЁЫЪ-Б-ВЖШСГЫБВЛЩ' с ключом 'ШАРП'.
Самостоятельное задание:
1. Написать функцию fillKeyTable (string key).
2. Протестировать её работу.
3. Добавить проверку корректности ключа.
4. Сделать скриншот.

Дешифровка - 16:55
На этом уроке мы закончим создание этой программы. Напишем функцию fillGrid2() по аналогии с предыдущей. В конце урока я покажу, как можно расшифровать сообщения, используя алгоритм шифровки, просто заменив ключ на 'обратный'.
Задание: Найти ключ, обратный 'ШАРП'.
Самостоятельное задание:
1. Написать функцию fillGrid2().
2. Протестировать де/шифрование.
3. Найти обратный ключ и проверить его.
4. Сделать скриншот.

Поточный шифр Виженера - 30:13

Описание алгоритма - 05:47
Приступаем к следующей шифровальной программе — поточный метод Виженера. Ваше задание — зашифровать слово 'ВИДЕОШАРП', используя ключ 'СИ'.
Самостоятельное задание:
Зашифровать слово ВИДЕОШАРП ключом СИ.

Шифровка - 11:33
На этом уроке мы познакомимся с поточным шифром Виженера. Этот алгоритм очень похож на предыдущий, поэтому мы будем модифицировать предыдущую программу.
Самостоятельное задание:
1. Скопировать проект.
2. Сделать шифрование новым методом.
3. Проверить работу алгоритма.
4. Сделать скриншот.

Дешифровка - 12:53
На этом уроке мы завершим переделку алгоритма для поточного метода шифра Виженера.
Самостоятельное задание:
1. Исправить функцию fillGrid2 ().
2. Протестировать работу программы.
3. Прислать скриншот.

RSA - 01:41:24

Идея алгоритма - 07:57
На этом уроке мы начнём создание алгоритма шифрования RSA (чтобы узнать подробности об этом методе шифрования см. ссылку внизу).
Самостоятельное задание:
1. Внимательно просмотреть видео.
2. Написать свои мысли относительно данного типа шифрования.
3. Приложить скриншот по теме.
4. * Изучить страничку wiki.

Экранная форма - 13:21
На этом уроке мы создадим новый проект в Visual Studio, подготовим всё необходимое для реализации алгоритма.
Самостоятельное задание:
1. Внимательно просмотреть видео.
2. Создать новый проект.
3. Настроить форму.
4. Добавить необходимые компоненты формы.
5. Приложить скриншот результата.
6. * На скриншоте ввести числа, подготовленные на прошлом уроке.

Простые случайные числа - 16:41
На этом уроке мы приступаем к заполнению ранее созданной формы. Также создадим отдельный класс для логики RSA шифрования. Реализуем генерацию простых чисел для дальнейшего использования при шифровании.
Самостоятельное задание:
1. Внимательно просмотреть видео.
2. Создать отдельный класс RSA().
3. Реализовать функции генерации простых чисел.
4. Реализовать функции генерации значений 'p' и 'q'.
5. Реализовать функцию ShowNumbers().
6. Реализовать функцию CalcNumbers().
7. Опишите свои мысли по поводу урока.
8. Приложить скриншот результата.
9. * реализовать ручной ввод чисел для генерации.

Открытый и секретный ключ - 22:23
На этом уроке мы реализуем генерацию открытого и секретного ключей.
Самостоятельное задание:
1. Внимательно просмотреть видео.
2. Реализовать функцию GCD().
3. Реализовать функции генерации значений 'e' и 'd'.
4. Модифицировать функцию ShowNumbers().
5. Реализовать функцию Show().
6. Приложить скриншот результата.

Буквы столбиком - 16:30
На этом уроке мы подводим итоги прошлого урока. Сформируем пары открытого и закрытого ключей.
Самостоятельное задание:
1. Внимательно просмотреть видео.
2. Доработать форму для работы с паблик/приват ключами.
3. Доработать форму для де/шифрования сообщения.
4. Приложить скриншот результата.
5. * при нажатии на Shift отобразить сообщение в колонке Letter (по вертикали).

Дешифровка - 24:32
На этом уроке мы приступаем к реализации шифрования/дешифрования нашего сообщения алгоритмом RSA.
Самостоятельное задание:
1. Внимательно просмотреть видео.
2. Реализовать алгоритмы при нажатии на кнопки Shifr/Deshifr.
3. Реализовать функцию InitGrid().
4. Реализовать функцию Shifr().
5. Реализовать функцию Power().
6. Реализовать функцию DeShifr().
7. Приложить скриншот результата.
8. * Добавить видео-отчёт.

Ключевой обмен Диффи-Хеллмана - 01:03:42

Идея алгоритма - 12:47
На этом уроке мы познакомимся с алгоритмом Диффи-Хеллмана по обмену секретными ключами. Мы продемонстрируем работу алгоритма сначала с цветами, а потом с небольшими целыми числами.
Самостоятельное задание:
1. Внимательно прослушать урок.
2. Проработать алгоритм для указанных чисел.

Форма - 16:39
На этом уроке мы скомпонуем форму для нашей программы и дадим имена всем текстовым полям и кнопкам.
Самостоятельное задание:
1. Создать проект и создать форму.
2. Переименовать текстовые поля и кнопки.
3. Приложить скриншот результата.

Случайное простое число - 16:16
На этом уроке мы сделаем алгоритм поиска случайного простого числа и выбора основания. Также напишем функции умножения по модулю и возведения в степень.
Самостоятельное задание:
1. Написать функцию long mult_mod (long a, long b).
2. Написать функцию long power_mod (long a, long b).
3. Написать функцию bool isPrime (long n).
4. Написать обработчик кнопки buttonGenerate PG.
5. Приложить скриншот программы.

Общий секретный ключ - 18:00
На этом уроке мы допишем программу до конца. Сделаем генерацию случайных секретных чисел. И напишем алгоритм обмена секретным ключом.
Самостоятельное задание:
1. Дописать программу до конца.
2. Протестировать её работу.
3. Приложить скриншот.

О преподавателе
Евгений Волосатов
Магистр математики и информатики, C#, Java, PHP программист
Я — Игромистр.
Моё призвание — показать пошаговый процесс создания игровых и прикладных программ, с нуля до результата.
Меня зовут Волосатов Евгений Витольдович, мне 40 лет, живу в Литве,
закончил Вильнюсский государственный университет магистром математики и информатики, также имею педагогическое образование.
За плечами сотни различных проектов на C#, Java, PHP, ASP.NET, SQL и т.д.
Всю свою сознательную жизнь я пишу программы и обучаю этому других.