Перейти к содержимому
Шифровка:
Функция получает в качестве параметров открытый текст и смещения. Исходный текст разбивается на символы и получается ASCII код каждого символа. ASCII код символа смещается на величину смещения. С данного кода получается символ и добавляется к результирующей сроки возвращаемого функцией inchezar.
Function inchezar(inp As String, key As Integer)
Dim rez As String
Dim ls As Integer
Dim simv As String
Dim ks As Integer
Dim pr As String
key = key Mod 255
rez = «»
ls = Len(inp)
For i = 0 To ls — 1
simv = Mid(inp, i + 1, 1)
ks = Asc(simv)
pr = ks + key
If (pr > 255) Then pr = (pr Mod 255) + 31
rez = rez + Chr(pr)
Next i
inchezar = rez
End Function
Дешифровка:
Функция получает в качестве входных параметров зашифрованный текст и количество символов, на которое делается сдвиг. Аналогичными операциями как в функции inchezar (но со смещением кругу символа в другую сторону) получается открытый текст, который возвращается функцией outchezar.
Function outchezar(inp As String, key As Integer)
Dim rez As String
Dim ls As Integer
Dim simv As String
Dim ks As Integer
Dim pr As String
key = key Mod 255
rez = «»
ls = Len(inp)
For i = 0 To ls — 1
simv = Mid(inp, i + 1, 1)
ks = Asc(simv)
pr = ks — key
If (pr < 32) Then pr = (pr Mod 31) + 224
rez = rez + Chr(pr)
Next i
outchezar = rez
End Function
Лабораторная работа 1.1 Изучение классических шифров замены
Цель: изучить
процедуры шифрования и расшифрования в шифрах Цезаря и Виженера.
Технология выполнения задания
Задание 1. Зашифровать
слово с помощью шифра Цезаря.
1.
В приложении MS Excel создать книгу, содержащую пронумерованные
символы
русского
алфавита: в перовом столбце ввести номера от 0 до 32, во втором – символы
алфавита по порядку, в третьем – снова нумерация от 0 до 32.
2.
Выбрать значение ключа равным номеру варианта (от 1 до 18).
3.
Зашифровать слово «семена» с помощью шифра Цезаря с выбранным
ключом:
ü
ввести шифруемое слово побуквенно в ячейки первой строки
отформатированной области; важно чтобы символы алфавита в таблице и символы
вводимого слова были набраны в одном регистре;
Рисунок 1. Пример содержания и форматирования книги «Алфавит»
ü
строкой ниже получить числовой код символов шифруемого слова с
помощью функции ВПР;
ü
первым параметром (Искомое_значение) функции назначить ссылку на
ячейку с текущим символом шифруемого слова
ü
вторым параметром (Таблица) функции назначить ссылку на таблицу с
алфавитом начиная со второго столбца (столбцы 2 и 3), ссылку на таблицу сделать
абсолютной нажав кнопку F4
ü
значение третьего параметра (Номер_столбца) задать равным 2
ü
в качестве значения четвертого параметра (Интервальный_просмотр)
ввести слово ложь, например=ВПР(F1;$B$1:$C$33;2;ЛОЖЬ) скопировать
функцию для всех символов шифруемого слова.
Рисунок 2. Пример
вычисления числового кода символа
ü
строкой ниже получить код символа криптограммы, сложив по модулю
33 полученный код текущего символа со значением ключа:
̶ ввести значение ключа,
̶
во второй строке под текущим символом шифруемого слова вставить функцию ОСТАТ
̶
в качестве значения первого параметра (Число) функции указать сумму ячейки с
кодом шифруемого символа и ячейки со значением ключа (ссылку на значение ключа
сделать абсолютной),
̶
второй параметр (Делитель) задать равным 33, например ОСТАТ(F2+$E$3;33),
скопировать сформированную функцию
ОСТАТ для всех символов шифруемого слова
Рисунок
3. Пример вычисления кода криптограммы, ключ равен 15
ü
строкой ниже с помощью функции ВПР перевести полученную
криптограмму в символьный вид:
̶ в
качестве значения первого параметра функции назначить ссылку на ячейку с
текущим кодом криптограммы
̶
в качестве значения второго параметра функции назначить ссылку на таблицу с
алфавитом начиная с первого столбца (столбцы 1 и 2) сделать ссылку на таблицу
абсолютной
̶ значение третьего параметра (Номер_столбца)
задать равным 2
̶
в качестве значения четвертого параметра (Интервальный_просмотр) ввести слово
ложь, например =ВПР(F3;$A$1:$B$33;2;ЛОЖЬ) скопировать функцию для всех
символов шифруемого слова
Рисунок 4. Пример текста,
зашифрованного шифром Цезаря
ü
Проверить результат шифрования с помощью онлайн-калькулятора http://planetcalc.ru/1434/
ü
Проанализировать полученный текст криптограммы, обратив внимание
на повторяющиеся символы.
Варианты задания
Номер варианта |
Ключ |
Слово |
1 |
16 |
арбуз |
2 |
27 |
сиквел |
3 |
14 |
ивасаки |
4 |
20 |
ульсан |
5 |
21 |
кёнгидо |
6 |
12 |
пусан |
7 |
10 |
токио |
8 |
11 |
сеул |
9 |
13 |
лекция |
10 |
9 |
руслан |
11 |
8 |
линч |
12 |
23 |
нетфликс |
13 |
4 |
аниме |
14 |
28 |
лакруа |
15 |
30 |
шоколад |
16 |
5 |
памело |
17 |
2 |
апельсин |
18 |
19 |
мандарин |
Задание 2. Расшифровать
криптограмму, полученную с помощью шифра Цезаря.
1.
Выбрать значение ключа шифрования и криптограмму в соответствии с
номером варианта
Номер варианта |
Ключ |
Криптограмма |
1 |
31 |
п ж й ж и м л |
2 |
29 |
ж ь и б з е ы |
3 |
28 |
ё а з к д и ю |
4 |
27 |
е ъ к н л я ё ц |
5 |
26 |
п ю ж ж з к л х |
6 |
25 |
й л н ж й к ж в |
7 |
24 |
ж ё г ё й е ё |
8 |
23 |
з я щ д ц в |
9 |
22 |
е ъ ё ъ щ х м х |
10 |
21 |
е г ж ф к э у |
11 |
20 |
ы у г ь е ю у |
12 |
19 |
ф б г б у ч ь |
13 |
18 |
э ъ г ь з с |
14 |
17 |
с х у х э я г |
15 |
16 |
я ю ы ш ё ш о |
16 |
15 |
а ч н ь ч у |
17 |
14 |
я ц а б н д ц м |
18 |
13 |
ю х ъ ы ъ х щ |
2.
Расшифровать криптограмму выбранным ключом:
ü
ввести побуквенно текст криптограммы в ячейки строки
отформатированной области, важно, чтобы символы алфавита в таблице и символы
вводимого слова были набраны в одном регистре
ü
строкой ниже получить числовой код символов шифруемого слова с
помощью функции ВПР
ü
строкой ниже получить код из символов расшифрованного текста,
вычтя по модулю 33 значение ключа из полученного кода текущего символа
криптограммы, используя функцию ОСТАТ
Рисунок 5. Пример вычисления кода открытого текста шифра
Цезаря
ü
строкой ниже с помощью функции ВПР перевести полученный код
криптограммы в символьный вид. Критерием правильности расшифрования является
получение осмысленного слова
Задание 3. Зашифровать
слово с помощью шифра Виженера.
1. Выбрать
значение ключа шифрования в соответствии с номером варианта
Вариант задания
Номер варианта |
Ключ |
Криптограмма |
1 |
слон |
г ф ь а ц ю ч ш е |
2 |
клин |
х ф й т ы щ н а у ц и |
3 |
смех |
ю м ч ъ ю м ч ю ь м |
4 |
звон |
з т ч в ф ж б ц т в |
5 |
приз |
м ю н ш т х ы р ъ р |
6 |
лист |
ю н э ч ш н д г ф з |
7 |
свет |
ь р с я е п н э с ш н с |
8 |
вой |
ф у х ж р т ё у ч к у |
9 |
мир |
ю к х я ч ф х ч ф |
10 |
час |
а н г й а э г я з а я |
11 |
кол |
к ю р ц ъ к б ч к |
12 |
слово |
ь ъ ь ц ч х р ь ш ч с ч к п э г ю к |
13 |
клуб |
б р я п ь ю б п ь ю п |
14 |
стул |
х б е ю е в б ъ г е п |
15 |
флаг |
ф ц т ц ф ч ь р г э т я |
16 |
дрель |
х т у р ю ф х с р й с я ц ю ш |
17 |
цена |
б у ю р ы п а н е ц а ь |
18 |
парус |
б и э а ц в р щ к я ю с г и |
2. Зашифровать
слово «алфавит» с помощью Виженера с выбранным ключом:
ü
Ввести побуквенно шифруемое слово в ячейки строки
отформатированной области; важно, чтобы символы алфавита в таблице и символы
вводимого слова были набраны в одном регистре
ü
Строкой ниже получить числовой код символов шифруемого слова с
помощью функции ВПР
ü
Строкой ниже ввести побуквенно ключ шифра Виженера, циклически
повторяя его, пока не будет достигнут конец шифруемого слова
Рисунок 6. Пример создания
ключевой строки шифра Виженера, ключевое слово «сыр»
ü
Строкой ниже получить числовой код символов ключевой строки с
помощью функции ВПР
ü
Строкой ниже получить код символа криптограммы, сложив по модулю
33 полученный код текущего символа шифруемого слова с кодом текущего символа
ключевой строки, используя функцию ОСТАТ
Рисунок 7. Пример
вычисления кода криптограммы шифра Виженера
ü
Строкой ниже с помощью функции ВПР перевести полученный код
криптограммы в символьный вид
ü
Проверить результат шифрования с помощью онлайн-калькулятора
http://planetcalc.ru/2468/
Задание 4. Расшифровать криптограмму, полученную с
помощью шифра Виженера
1.
Выбрать значение ключа шифрования и криптограмму в
соответствии с номером варианта
2.
Расшифровать криптограмму выбранным ключом:
ü
ввести текст криптограммы побуквенно в ячейки строки
отформатированной области; важно, чтобы символы алфавита в таблице и символ
вводимого слова были набраны в одном регистре
ü
строкой ниже получить числовой код символов шифруемого слова с
помощью функции ВПР
ü
строкой ниже сформировать ключевую строку
ü
строкой ниже получить числовой код символов ключевой строки с
помощью функции ВПР
ü
строкой ниже получить код символа открытого текста, вычтя по
модулю 33 код текущего символа ключевой строки из кода текущего символа
криптограммы, используя функцию ОСТАТ
ü
строкой ниже с помощью функции ВПР перевести полученный
код криптограммы в символьный вид. Критерием правильности расшифрования
является получение осмысленного слова.
Рисунок 8. Пример
вычисления кода открытого текста шифра Виженера
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке «Файлы работы» в формате PDF
Шифрование – обратимое преобразование информации, применяемое для её хранения в ненадёжных источниках и передачи по незащищённым каналам связи в целях сокрытия от неавторизованных лиц, но с предоставлением доступа к ней, авторизованным пользователям. Такая передача данных представляет собой два взаимно обратных процесса: Перед отправлением данных по линии связи или перед помещением на хранение они подвергаются зашифровыванию. Для восстановления исходных данных, из зашифрованных, к ним применяется процедура расшифровывания.
Важной особенностью любого алгоритма шифрования является использование ключа, который утверждает выбор конкретного преобразования из совокупности возможных для данного алгоритма. Ключи для шифрования и для расшифровывания могут различаться, а могут быть одинаковыми. Секретность второго (расшифровывающего) из них делает данные недоступными для несанкционированного ознакомления, а секретность первого (шифрующего) делает невозможным внесение ложных данных. В первых методах шифрования использовались одинаковые ключи, однако в 1976 году были открыты алгоритмы с применением разных ключей. Сохранение этих ключей в секретности и правильное их разделение между адресатами является очень важной задачей с точки зрения сохранения конфиденциальности передаваемой информации.
Шифрование изначально использовалось только для передачи конфиденциальной информации. Однако впоследствии шифровать информацию начали с целью её хранения в ненадёжных источниках. Шифрование информации с целью её хранения применяется и сейчас, это позволяет избежать необходимости в физически защищённом хранилище.
Во время Второй мировой войны сложные технические и криптографические средства зашиты информации стали во многом ключевыми, ведь ценность информации возросла кратно. Одной из выдающихся и находящихся на слуху шифровальных машин, была роторно-электрическая шифровальная машина «Wehrmacht Enigma» разработанная в начале 20-х годов.
В настоящий момент существует огромное количество методов шифрования. Главным образом эти методы делятся, в зависимости от структуры используемых ключей, на симметричные методы и асимметричные методы. Кроме того, методы шифрования могут обладать различной криптостойкостью и по-разному обрабатывать входные данные — блочные шифры и поточные шифры. Всеми этими методами, их созданием и анализом занимается наука криптография.
Но шифрование возникло далеко не в век компьютерных технологий, им пользовались ещё люди в древности, великие цари и полководцы. Ведь именно те века, были веками громких политических заговоров, дворцовых переворотов, судьбоносных сражений, а залогом победы являлась именно информация.
Цезарь был мудрым императором, и дабы ценная информация не досталась, кому не следует, он придумал способ обезопасить свои послания.
Простым, незамысловатым кодом он разрушил планы многих своих недоброжелателей, тем самым обезопасив себя и империю.
Шифр Цезаря является частным случаем шифра простой замены (одноалфавитной подстановки). Свое название этот шифр получил по имени римского императора Гая Юлия Цезаря, который использовал этот шифр при переписке.
При шифровании исходного текста каждая буква заменяется другой буквой того же алфавита по следующему правилу. Заменяющая буква определяется путем смещения по алфавиту к концу от исходной буквы на k букв. При достижении конца алфавита выполняется циклический переход к его началу.
Например, пусть A используемый алфавит:
где – символы алфавита; N ширина алфавита.
Пусть k – число позиций сдвига символов алфавита при шифровании
При шифровании каждый символ алфавита с номером из кодируемого текста заменяется на символ этого же алфавита с номером
Если , номер символа в алфавите A определяется как
Для дешифрования текстовой информации номер позиции символа восстанавливаемого текста определяется как
Если , то вычисление этого номера производится как
Достоинством этой системы является простота шифрования и дешифрования. К недостаткам системы Цезаря следует отнести:
подстановки, выполняемые в соответствии с системой Цезаря, не маскируют частот появления различных букв исходного и отрытого текста;
сохраняется алфавитный порядок в последовательности заменяющих букв;
при изменении значения k изменяются только начальные позиции такой последовательности;
число возможных ключей k мало; шифр Цезаря легко вскрывается на основе анализа частот появления букв в шифре.
Постараемся при помощи шифра Цезаря в среде Excel зашифровать наше скромное послание «Тамбовский волк тебе товарищ!». Для этого создадим новый документ в Excel и на первом листе создадим массив АВС, в котором будут использоваться только те символы, которые входят в алфавит (см. рис. 1.).
Рис. 1 – Массив АВС с символами, входящими в алфавит
В ячейке B3 записать формулу:
Функция ПРОПИСН переводит буквенные символы в строке в прописные буквы. (см. рис. 2.)
В ячейке D3 записать формулу:
Функция ДЛСТР позволяет определить длину строки, что необходимо пользователю, для кодировки исходной строки. (см. рис. 3.)
Рис. 2.− Перевод буквенных символов в прописные |
Рис. 3.− Определение длины строки |
В ячейку D4 записать значение сдвига k, например, 6. (см. рис. 4.)
Рис. 4. – Запись значения сдвига
В столбце А, начиная с ячейки А6, пронумеровать ячейки числами последовательного ряда от 1 до N, где N – число символов в тексте, включая пробелы. Значение N рассчитано в ячейке D3 и в нашем случае равно 30. (см. рис. 5.)
Рис. 5. − Нумерация ячеек числами последовательного ряда |
Рис. 6. – Разделение текста на отдельные символы |
В ячейку B6, записать формулу:
Она разделяет кодируемый текст на отдельные символы. Скопировать её в ячейки В7-В35. (см. рис. 6.)
В ячейку C6 записать формулу: (см. рис. 7.)
Рис. 7. − Поиск индекса символа в массиве АВС |
Рис. 8. − сдвиг номеров символов алфавита на величину k |
Функция ПОИСКПОЗ из категории «Полный алфавитный перечень» производит поиск индекса (номера позиции) символа в массиве ABC, который был определен на листе 2. Скопировать содержимое ячейки C6 в ячейки C7-C35.
Получив номер символа в алфавите ABC, произвести сдвиг нумерации алфавита для кодируемой последовательности символов. В ячейку D6 записать формулу: (см. рис.
Эта формула производит сдвиг номеров символов алфавита на величину k и определяет номер заменяющего символа из алфавита ABC. Содержимое D6 скопировать в область D7-D47.
Выбрать символы из алфавита ABC в соответствии с новыми номерами. В ячейку E6 записать формулу (см. рис. 9.)
Рис. 9. − Выбор символов из алфавита ABC в соответствии с новыми номерами
Скопировать содержимое ячейки E6 в область E7-E35.
Для получения строки закодированного текста необходимо в ячейку F6 записать: (см. рис. 10.)
В ячейку F7 соответственно:
Далее скопировать содержимое ячейки F7, в область F8-F47. В ячейке F47 прочитать зашифрованный текст.
Рис. 9. – Получение строки закодированного текста
Для проверки шифрования произвести дешифрование полученного текста и сравнить его с исходным. На третьем листе выполнить дешифрование аналогично пунктам 2-11. При этом необходимо учесть следующие особенности: в п. 2 набрать зашифрованный текст: (см. рис. 11.)
Рис. 11. – Зашифрованный текст
В п. 9 в ячейку D6 записать формулу:
Получение исходного текста в ячейке F35 третьей страницы (см. рис. 11) свидетельствует о корректном выполнении лабораторной работы.
Вывод: на примере простой задачи убедились, что среда MS Excel хорошо подходит для решения задач, связанных с шифрованием и дешифрованием любого вида информации, и что самое главное, довольна, легка и понятна в освоении.
Шифр Цезаряedyo.ru
4 yil oldin
Третья серия из раздела «Древнее шифрование» на Академии Хана. Брит Круз рассказывает о шифре Цезаря и метод…
Шифр подстановкиWikitube Ru
2 yil oldin
Шифр подстановки Шифр подстано́вки — это метод шифрования, в котором элементы исходного открытого текста…
Шифр ВиженераRoman Tsarev
Yil oldin
Шифр Виженера, гаммирование. Частный случай шифра Виженера: шифр Цезаря, шифр Вернама. Применение генератор…
Гаммированиесупер грассманиан
2 oy oldin
Симметричное шифрование. Гаммирование. Шифры первой мировой войны. Сложение по модулю. Секретные ключи….
Многоалфавитный шифрedyo.ru
4 yil oldin
Четвертая серия из раздела «Древнее шифрование» на Академии Хана. Брит Круз рассказывает о многоалфавитном…
27.11.2012 Григорий Цапко Калькуляторы, шаблоны, форматы, Практикум
Сегодня мы с вами будем заниматься шифрованием в Excel, в частности шифрованием паролей. Если в прошлый раз, мы просто генерировали пароль заданной длины и сложности при помощи встроенного генератора случайных чисел, и получали каждый раз разный пароль, то сегодня мы будем рассматривать пример, в котором при вводе исходного текста и ключевого слова будет всегда получаться одна и та же последовательность символов. Пароль можно сделать достаточно длинным и сложным, и использовать в повседневной практике. Нужно будет лишь помнить исходный текст и ключ, что согласитесь, запомнить гораздо проще, чем длинную последовательность ничего не значащих символов.
Поскольку, наша разработка не будет использоваться в военных целях, мы можем использовать относительно простой алгоритм шифрования — шифр Виженера. Для наших целей этого будет вполне достаточно. Напомню, что наша основная цель – это изучение возможностей программы Excel, в том числе на подобных комплексных примерах.
Шифр Виженера достаточно прост для понимания и основывается на шифре Цезаря. Напомню, что в шифре Цезаря зашифрованное сообщение получается путем сдвига алфавита на какое-то заданное число. Например, если это число 5, то буква А становиться буквой Д, буква Б становиться буквой Е и т.д. Это один из самых простых алгоритмов шифрования.
Шифр Виженера состоит в последовательном применении нескольких шифров Цезаря, с различными сдвигами, определяемыми ключевым словом. Так если, ключевое слово «ЗАРЯ», то последовательность сдвигов будет следующая «9; 1; 18; 33» т.е. соответствующая порядковым номерам букв ключевого слова в алфавите. Эта последовательность сдвигов применяется к исходному тексту: первый символ смещается на 9 знаков, второй символ исходного текста – на 1 знак, третий – на 18, четвертый – на 33, пятый – снова на 9 и т.д. по кругу. Это уже более сложный алгоритм шифрования, вполне нам подходящий.
После краткого экскурса в криптографию приступим к созданию нашей шифровальной системы в Excel.
По сути дела, нам надо будет укрупненно решить следующие задачи:
Во-первых, обеспечить необходимую длину пароля независимо от исходного текста. В нашем случае пусть это будет 8 и 16 символов.
Во-вторых, получить последовательность символов с учетом сдвигов по ключевому слову соответствующую русским буквам алфавита;
В-третьих, перевести русские буквы алфавита в символы соответствующие латинским буквам, цифрам и специальным знакам;
Применительно к первой задаче, необходимо иметь ввиду главное отличие нашего примера от полноценных шифровальных систем: мы будем шифровать пароль только в одну сторону. Это сильно упрощает задачу. По сути дела, мы можем «обрезать» исходный текст в соответствии с нашей длиной пароля. Однако, в случае, если исходный текст короче максимальной длины нашего пароля (короче 16 символов), то нам все же будет необходимо «дорастить» его до требуемого количества знаков.
При разработке примера мы будем прибегать к средствам программирования, а постараемся решить задачу лишь стандартными встроенными функциями Excel.
Основой нашей разработки, как вы уже догадались, будут являться текстовые функции Excel.
Изначально у нас будет иметься два поля для ввода исходного текста, и ключевого слова.
Для удобства, присвоим имена «пароль» и «ключ» ячейкам, в которые будем вводить соответствующие данные.
Данные у нас вводятся в виде текста, и наша первая задача, отделить каждый символ (букву) друг от друга и поместить в отдельных ячейках.
Для этого мы будем использовать функцию ПСТР, возвращающую заданное число знаков из текстовой строки, начиная с указанной позиции и имеющую следующий синтаксис:
=ПСТР(текст; начальная_позиция; количество_знаков)
Где:
текст – исходный текст. В нашем случае это будет текст из ячеек с именами «пароль» и «ключ»;
начальная_позиция – порядковый номер символа в текстовой строке, начиная с которого будет возвращаться заданное количество знаков. В нашем случае – это будет ссылка на ячейку, содержащую порядковый номер символа, один из 16 номеров.
количество_знаков – соответственно то количество знаков, которое нам надо получить. В нашем случае, поскольку мы будем «растаскивать» слово по буквам, то это будет 1.
Справа от ячеек, в которые будем вводить данные, у нас будет располагаться два диапазона по 16 ячеек расположенных в двух строках для «растаскивания» исходного пароля и ключа на одиночные символы (буквы). В нашем примере, это будет диапазон G6:V6 для растаскивания исходного пароля и G7:V7 для растаскивания ключа. Над этими диапазонами, в ячейках G5:V5 разместим порядковые номера символов от 1 до 16.
С учетом этого, формула для «растаскивания» будет выглядеть следующим образом:
Для исходного пароля =ПСТР(пароль;G5;1)
Для ключа =ПСТР(ключ;G5;1)
Это для выделения первых символов из исходного пароля и ключа (в примере G5=1).
Скопировав эти формулы построчно в каждую из 16 ячеек, мы в каждой ячейке получим по одному символу, из которых состоит исходный пароль и ключ.
Однако, мы наверняка столкнемся с такой ситуацией, когда исходный пароль или ключ состоит менее чем из 16 знаков. В нашем примере исходный пароль «глобус» имеет 6 знаков, а ключевое слово «заря» — 4 знака.
В этом случае, нам на помощь приходит функция ПОВТОР, повторяющая текст заданное число раз и имеющая следующий синтаксис:
=ПОВТОР(текст; число_повторений)
Где:
тест – текст, который необходимо повторить. В нашем случае это текст из ячеек с именами «пароль» и «ключ».
число_повторений – число повторений текста. В нашем случае мы должны рассчитать необходимое число повторений таким образом, чтобы гарантировано заполнить все 16 символов.
Можно было бы установить число повторений равным 16, что гарантировало бы результат, однако, мы поступим более изящно. Для определения необходимого количества повторов, мы используем функцию ДЛСТР, которая возвращает количество знаков в текстовой строке, и имеющая интуитивно понятный синтаксис:
=ДЛСТР(текст)
Применительно к исходному паролю функция ДЛСТР должна вернуть значение 6, а применительно ключу – значение 4.
Далее совсем просто. Делим 16 на значение возвращаемое функцией ДЛСТР и получаем необходимое число повторов.
16/ДЛСТР(пароль)=2,66666(6)
16/ДЛСТР(ключ)=4
Чтобы избежать дробных значений, используем функцию округления до ближайшего большего значения:
=ОКРУГЛВВЕРХ(число; число_разрядов).
Таким образом, объединив перечисленные выше функции, мы получаем формулу для растаскивания по символам и дублирования, т.е. заполнения каждой из 16 ячеек наших диапазонов для исходного пароля и ключа:
Для пароля =ПСТР(ПОВТОР(пароль;ОКРУГЛВВЕРХ(16/ДЛСТР(пароль);0));G5;1)
Для ключа: =ПСТР(ПОВТОР(ключ;ОКРУГЛВВЕРХ(16/ДЛСТР(ключ);0));G5;1)
На рисунке представлены результаты применения описанных выше формул.
Давайте теперь предусмотрим случай, если наш пароль будет состоять из двух слов с пробелом. Пробел плохо воспринимается функциями Excel, и мы заменим его на символ нижнего подчеркивания.
В этом нам поможет текстовая функция ПОДСТАВИТЬ, которая позволяет произвести замену старого текста на новый в текстовой строке, и имеющая синтаксис:
=ПОДСТАВИТЬ(текст; стар_текст; нов_текст; )
Где:
текст – текстовая строка, в которой будет осуществляться замена. В нашем случае, это ячейки с именами «Пароль» и «Ключ»;
стар_текст – старый текст, который подлежит замене. В нашем случае это пробел (в формуле указывается в кавычках » «);
нов_текст – новый текст, которым будет заменен старый текст. В нашем случае это символ нижнего подчеркивания «_»;
– номер первого символа в текстовой строке, начиная с которого будет осуществляться замена старого текста новым. Можно не ставить ничего, тогда заменены будут все появления старого текста.
Функция замены пробела будет выглядеть следующим образом:
=ПОДСТАВИТЬ(пароль;» «;»_») для пароля и =ПОДСТАВИТЬ(ключ;» «;»_») для ключа.
С учетом этого, после того, как мы подставим эту формулу в нашу общую комбинацию, итоговая формула примет вид:
=ПСТР(ПОВТОР(ПОДСТАВИТЬ(пароль;» «;»_»);ОКРУГЛВВЕРХ(16/ДЛСТР(пароль);0));G5;1) для пароля и,
=ПСТР(ПОВТОР(ПОДСТАВИТЬ(ключ;» «;»_»);ОКРУГЛВВЕРХ(16/ДЛСТР(ключ);0));G5;1) для ключа.
Теперь, чтобы у нас совсем не было накладок, давайте исключим появление заглавных букв во фразах пароля и ключа.
Для этого мы можем воспользоваться функцией СТРОЧН, которая делает все буквы в текстовой строке строчными и имеет интуитивно понятный синтаксис:
=СТРОЧН(текст), где:
текст – текстовая строка, в которой необходимо провести замену заглавных букв строчными.
После подстановки, наша комбинация функций примет вид:
=ПСТР(ПОВТОР(ПОДСТАВИТЬ(СТРОЧН(пароль);» «;»_»);ОКРУГЛВВЕРХ(16/ДЛСТР(пароль);0));G5;1) для пароля и,
=ПСТР(ПОВТОР(ПОДСТАВИТЬ(СТРОЧН(ключ);» «;»_»);ОКРУГЛВВЕРХ(16/ДЛСТР(ключ);0));G5;1) для ключа.
Теперь переходим к решению второй задачи – переводу символов пароля и ключа в числовые значения, необходимые нам для последующей обработки.
Для перевода строчных букв русского алфавита в числовые значения, мы могли бы воспользоваться функцией КОДСИМВ(текст), возвращающую числовой код символа по таблице знаков ANSI.
Поскольку строчные буквы русского алфавита имеют код с 224 по 255 (32 буквы без «ё»), то получить порядковые номера букв лежащих в более привычном диапазоне от 1 до 33 (32), мы можем, отняв от кода символа число 223.
Формула будет иметь вид:
=КОДСИМВ(текст)-223;
Для пароля =КОДСИМВ(ПСТР(ПОВТОР(ПОДСТАВИТЬ(СТРОЧН(пароль);» «;»_»);ОКРУГЛВВЕРХ(16/ДЛСТР(пароль);0));G5;1))-223
Для ключа =КОДСИМВ(ПСТР(ПОВТОР(ПОДСТАВИТЬ(СТРОЧН(ключ);» «;»_»);ОКРУГЛВВЕРХ(16/ДЛСТР(ключ);0));G5;1))-223
Если не использовать в пароле и ключе пробелов и буквы «ё», коды символов которых не входят в наш основной диапазон, то этого вполне достаточно. Однако мы рассмотрим более расширенный вариант.
Для этого будем использовать функцию ПОИСКПОЗ, которая возвращает относительную позицию элемента в массиве, и имеющая синтксис:
=ПОИСКПОЗ(искомое_значение; просматриваемый_массив; ),
Где:
искомое_значение – значение, которое мы будем искать в массиве. В нашем случае это буквы русского алфавита из фразы пароля и ключа;
просматриваемый_массив – массив со всеми значениями элементов, в котором будет осуществляться поиск. В нашем случае, мы создадим массив состоящий из всех букв русского алфавита и знака подчеркивания в диапазоне ячеек А1:А34. Присвоим данному диапазону имя «кирилица»;
тип_сопоставления – принимает значения 1-меньше, 0-точное совпадение, -1-больше. В нашем случае мы будем искать точное сопоставление.
С учетом того, что символы русского алфавита соответствующие паролю и ключу у нас находятся в диапазонах G6:V6 и G7:V7 соответственно, то формула для перевода букв в числа будет выглядеть следующим образом:
Для первого символа пароля =ПОИСКПОЗ(G6;кирилица;0) и =ПОИСКПОЗ(G7;кирилица;0) для ключа.
Результат можно посмотреть на рисунке.
Как видим, мы получили два ряда чисел, находящихся один под другим. Теперь, чтобы наш алгоритм шифрования начал работать, нам необходимо сложить эти числа попарно.
После того как мы получили ряд чисел, переходим к решению третьей задачи – переводу числовых значений в символы латинского алфавита, цифры и спецсимволы.
Для перевода будем использовать функцию ИНДЕКС которая возвращает значение элемента таблицы или массива, заданного номером строки и номером столбца.
=ИНДЕКС(массив; номер_строки; )
И созданную нами одномерную таблицу символов из одного столбца и количеством строк по числу используемых нами символов. Таблица символов будет состоять из строчных и заглавных латинских букв, чисел от 1 до 9 и спецсимволов.
Таблица должна иметь 68 строк и 67 символов, со 2 строки по 68. Связано это с тем, что наша исходная таблица с буквами русского алфавита имеет 34 символа, после перевода пароля и ключа в порядковые номера строк этой таблицы и их попарного сложения, мы можем получить числовой ряд с номерами минимум 2 (1+1) и максимум 68 (34+34).
Создаем таблицу символов в диапазоне В1:В68, присваиваем ей имя «латиница», и заполняем символами латинских заглавных и строчных букв, цифр и спецсимволов. Можно заполнять подряд, можно вперемешку. В нашем примере таблица собрана таким образом: заглавная и строчная латинская буква подряд по алфавиту и через каждые девять символов идет цифра (АаВbСс1DdEeFf2…) и в конце спецсимволы. Сделано это для распределения вероятности попадания заглавных строчных букв и цифр.
Таблицу символов можно периодически менять. Это по сути дела еще один этап шифрования.
С учетом того, что числовой ряд, который мы будем кодировать находиться у нас в диапазоне G12:V12, формула для перевода чисел в символы будет иметь вид:
=ИНДЕКС(латиница;G12;1) для первого числа.
Скопировав ее во все 16 ячеек нашего диапазона, мы получим последовательность ничего не значащих символов, чего собственно говоря, мы и добивались.
Теперь остается их только соединить вместе и поместить в одну ячейку.
Сделать это можно при помощи функции СЦЕПИТЬ.
=СЦЕПИТЬ(G14;H14;I14;J14;K14;L14;M14;N14;O14;P14;Q14;R14;S14;T14;U14;V14).
Поскольку мы решили сделать в нашем примере возможность выбора между 8 и 16 символами, то добавляем соответствующий элемент управления – «Переключатель».
Добавить Переключатель на лист можно через вкладку Разработчик→ группа Элементы управления→ команда Вставить→ Элементы управления формы → Переключатель.
Настраиваем переключатель следующим образом:
Правой кнопкой мыши кликаем на переключателе и в появившемся контекстном меню выбираем пункт Формат объекта. В появившемся диалоговом окне Формат элемента управления на вкладке Элемент управления в поле Связь с ячейкой устанавливаем связь с ячейкой D12.
Теперь, поскольку у нас всего два переключателя, то когда установлен первый, в ячейке D12 будет значение 1, когда будет установлен второй – значение 2.
Этого достаточно, чтобы использовать логическую функцию ЕСЛИ и в одном случае сцепить 8 символов, а в другом сцепить 16 символов.
С учетом наличия переключателей, наша формула будет иметь вид:
=ЕСЛИ(D12=1;СЦЕПИТЬ(G14;H14;I14;J14;K14;L14;M14;N14);СЦЕПИТЬ(G14;H14;I14;J14;K14;L14;M14;N14;O14;P14;Q14;R14;S14;T14;U14;V14))
Наш чудо-шифратор пароля готов.
Как обычно выполняем некоторые организационные мероприятия для защиты листа и придания ему надлежащего вида. С этой целью, мы устанавливаем защиту ячеек на всем листе, кроме ячеек D12 (там где меняется параметр после установки переключателя). Чтобы ничего не нарушить случайным образом скрываем столбец D. Скрываем все вспомогательные данные на листе, устанавливая формат данных «;;;» и защищаем лист.
В учебном примере на защиту листа пароля нет, и чтобы посмотреть устройства файла нужно просто снять защиту листа на вкладке Рецензирование.
Скачать
Пароль, шифрование
Воскресенье Ноя 2014
Функція шифрування. Опис функції cezar_shifr : функція отримує в якості вхідних параметрів відкритий текст та кількість символів, на яку робиться зсув. Вхідний текст розбивається на символи та отримується ASCII код кожного символу. ASCII код символу зміщується на величину зсуву. З даного коду отримується символ та додається до результуючої строки що повертається функцією cezar_shifr . В результаті отримуємо зашифрований текст.
Функція дешифрування. Опис функції cezar_deshifr: функція отримує в якості вхідних параметрів зашифрований текст та кількість символів, на яку робиться зсув. Аналогічними операціями як в функції cezar_deshifr (але зі зміщенням колу символу в іншу сторону) отримується відкритий текст, що повертається функцією cezar_deshifr.
Блок-схеми:
Основные понятия криптографии
Теперь, когда даны основные определения, рассмотрим одну из простейших систем шифрования, которая носит имя » шифр Юлия Цезаря». Предполагается, что знаменитый римский император и полководец, живший в 1 веке до нашей эры, использовал этот шифр в своей переписке.
Шифр Цезаря применительно к русскому языку пример 1.1 состоит в следующем. Каждая буква сообщения заменяется на другую, которая в русском алфавите отстоит от исходной на три позиции дальше. Таким образом, буква A заменяется на Г , Б на Д и так далее вплоть до буквы Ь , которая заменялась на Я , затем Э на A , Ю на Б и, наконец, Я на В .
Так, например, слово ЗАМЕНА после шифрования методом Цезаря превратится в КГПЗРГ .
Для расшифрования сообщения КГПЗРГ необходимо знать только сам алгоритм шифрования. Любой человек, знающий способ шифрования, легко может расшифровать секретное сообщение. Таким образом, ключом в данном методе является сам алгоритм .
Каким образом можно усовершенствовать шифр Цезаря? Можно было бы попытаться расширить алфавит с 33 до 36 символов и более за счет включения знаков препинания и пробелов. Это увеличение алфавита замаскировало бы длину каждого отдельного слова.
Усовершенствуем шифр Цезаря с учетом правила Керкхоффса.
Предположим, что буквы сдвигаются не на три знака вправо, а на n (0 ключ – число n – параметр сдвига. Отправитель и получатель могут каким-либо образом договариваться (например, лично) и иногда менять значение ключа. Так как n может принимать разные значения, знание одного только алгоритма не позволит противнику расшифровать секретное сообщение.
Таблица 1.1. Перебор вариантов для поиска ключа при использовании метода Цезаря
Перехваченная криптограмма ЧСЮЭЮЪ | |||
1 | ШТЯЮЯЫ | 17 | ЗВОНОК |
2 | ЩУАЯАЬ | 18 | ИГПОПЛ |
3 | ЪФБАБЭ | 19 | ЙДРПРМ |
4 | ЫХВБВЮ | 20 | КЕСРСН |
5 | ЬЦГВГЯ | 21 | ЛЁТСТО |
6 | ЭЧДГДА | 22 | МЖУТУП |
7 | ЮШЕДЕБ | 23 | НЗФУФР |
8 | ЯЩЁЕЁВ | 24 | ОИХФХС |
9 | АЪЖЁЖГ | 25 | ПЙЦХЦТ |
10 | БЫЗЖЗД | 26 | РКЧЦЧУ |
11 | ВЬИЗИЕ | 27 | СЛШЧШФ |
12 | ГЭЙИЙЁ | 28 | ТМЩШЩХ |
13 | ДЮКЙКЖ | 29 | УНЪЩЪЦ |
14 | ЕЯЛКЛЗ | 30 | ФОЫЪЫЧ |
15 | ЁАМЛМИ | 31 | ХПЬЫЬШ |
16 | ЖБНМНЙ | 32 | ЦРЭЬЭЩ |
Мы видим, что единственное слово , имеющее смысл, – это ЗВОНОК . Это слово располагается на 17 месте. Следовательно, если шифрованный текст сдвинуть на 17 позиций вперед получится открытый текст . Это означает, что для получения шифрованного текста открытый текст нужно сдвинуть на (33-17)=16 позиций. Таким образом, получили, что при шифровании ключ n=16 .
Так, например, пусть исходный алфавит состоит из арабских цифр, то есть имеет вид
Видно, что все полученные варианты равнозначны и злоумышленник не может понять, какая именно комбинация истинна. Анализируя шифротекст, он не может найти значения секретного ключа. Конечно, один из приведенных в таблице вариантов подойдет к кодовому замку, но в столь простом методе шифрования нельзя рассчитывать на большую секретность.
Приведенные простые примеры показывают, что вероятность успешного криптоанализа зависит от многих факторов: от системы шифрования, от длины перехваченного сообщения, от языка и алфавита исходного сообщения. В последующих лекциях постараемся подробнее рассмотреть все эти факторы.
Система шифрования Цезаря. В помощь ученику — Информатика — Блог учителя — сайт средней школы №4 п. Победа Адыгея
Расшифровка такая же, как и шифрование. Мы можем создать функцию, которая выполнит сдвиг по противоположному пути, чтобы расшифровать исходный текст. Однако мы можем использовать циклическое свойство шифра под модулем.
Мнение эксперта
Витальева Анжела, консультант по работе с офисными программами
Со всеми вопросами обращайтесь ко мне!
Задать вопрос эксперту
Алгоритм шифрования транспонирования это метод, при котором алфавитный порядок в открытом тексте перестраивается для формирования зашифрованного текста. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!
Цезарь даже предпринял шаги, чтобы превратить Италию в провинцию и более тесно связать другие провинции империи в единое целое. Этот процесс объединения всей Римской империи в единое целое, а не сохранения ее как сети неравных княжеств, в конечном итоге будет завершен преемником Цезаря, императором Августом.
Юлий ЦезарьРанняя жизнь и карьера а также Консульство и военные кампании
Светоний , писавший более века спустя после смерти Цезаря, описывает Цезаря как «высокого роста, со светлым лицом, стройными конечностями, несколько полным лицом и проницательными черными глазами». [141]
Перехваченная криптограмма ЧСЮЭЮЪ | |||
1 | ШТЯЮЯЫ | 17 | ЗВОНОК |
2 | ЩУАЯАЬ | 18 | ИГПОПЛ |
3 | ЪФБАБЭ | 19 | ЙДРПРМ |
4 | ЫХВБВЮ | 20 | КЕСРСН |
5 | ЬЦГВГЯ | 21 | ЛЁТСТО |
6 | ЭЧДГДА | 22 | МЖУТУП |
7 | ЮШЕДЕБ | 23 | НЗФУФР |
8 | ЯЩЁЕЁВ | 24 | ОИХФХС |
9 | АЪЖЁЖГ | 25 | ПЙЦХЦТ |
10 | БЫЗЖЗД | 26 | РКЧЦЧУ |
11 | ВЬИЗИЕ | 27 | СЛШЧШФ |
12 | ГЭЙИЙЁ | 28 | ТМЩШЩХ |
13 | ДЮКЙКЖ | 29 | УНЪЩЪЦ |
14 | ЕЯЛКЛЗ | 30 | ФОЫЪЫЧ |
15 | ЁАМЛМИ | 31 | ХПЬЫЬШ |
16 | ЖБНМНЙ | 32 | ЦРЭЬЭЩ |
Таблица 1.1. Перебор вариантов для поиска ключа при использовании метода Цезаря
Завоевание Галлии
Верцингеторикс опускает руки к ногам Юлия Цезаря, картина Лайонела Ройера . Музей Крозатье , Ле-Пюи-ан-Веле , Франция.
Римский бюст Помпея Великого, сделанный во время правления Августа (27 г. до н.э. — 14 г. н.э.), копия оригинального бюста 70–60 г. до н.э., Национальный археологический музей Венеции , Италия.
На этой римской настенной росписи середины I века до н.э. в Помпеях , вероятно, изображена Клеопатра VII в образе Венеры Генетрикс , а ее сын Цезарион — в образе Купидона . Его владелец Марк Фабий Руф, скорее всего, приказал спрятать его за стеной в ответ на казнь Цезариона по приказу Октавиана в 30 г. до н.э. [75] [76]
Цезарь и Клеопатра не были женаты. Цезарь продолжал свои отношения с Клеопатрой на протяжении всего своего последнего брака — в глазах римлян это не было прелюбодеянием — и, вероятно, у него родился сын по имени Цезарион . Клеопатра не раз посещала Рим, проживая на вилле Цезаря недалеко от Рима, на другом берегу Тибра . [81]
После этой победы он был назначен диктатором на 10 лет. [87] Сыновья Помпея бежали в Испанию; Цезарь преследовал и разгромил последние остатки сопротивления в битве при Мунде в марте 45 г. до н.э. [88] За это время Цезарь был избран на третий и четвертый сроки консулом в 46 г. до н.э. и 45 г. до н.э. (в последний раз без коллеги).
Мнение эксперта
Витальева Анжела, консультант по работе с офисными программами
Со всеми вопросами обращайтесь ко мне!
Задать вопрос эксперту
В хаосе, последовавшем за смертью Цезаря, Марк Антоний, Октавиан позже Август Цезарь и другие участвовали в серии из пяти гражданских войн, кульминацией которых стало формирование Римской империи. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!
Монеты имели его изображение, и ему было предоставлено право говорить первым на заседаниях Сената. [99] Затем Цезарь увеличил количество судей, избираемых каждый год, что создало большой пул опытных магистратов и позволило Цезарю вознаграждать своих сторонников. [101]
Собственные сочинения
- Марк Юний Брут (родился в 85 г. до н.э.): историк Плутарх отмечает, что Цезарь считал Брута своим незаконнорожденным сыном, поскольку его мать Сервилия была любовницей Цезаря в молодости. [143] Цезарю было бы 15 лет, когда родился Брут.
- Юния Терция (род. Около 60-х гг. До н.э.), дочь возлюбленной Цезаря Сервилии, считалась Цицероном среди других современников естественной дочерью Цезаря.
- Децим Юний Брут Альбин (родился ок. 85–81 до н. Э.): Цезарь несколько раз выражал свою любовь к Дециму Бруту как к сыну. Этот Брут был также назван наследником Цезаря на случай, если Октавий умер раньше последнего. Рональд Сайм утверждал, что если Брут был естественным сыном Цезаря, Децим был более вероятным, чем Маркус . [144]
В этом методе каждый символ заменяется буквой с определенной фиксированной числовой позицией, которая находится после или перед буквой. Например, буква B заменяется на стоящую двумя позициями дальше D. D становится F и так далее. Этот метод назван в честь Юлия Цезаря, который использовал его для общения с официальными лицами.