Зашифрованные слова в excel

Защита ячеек шифром Виженера

Парольная защита листов в Microsoft Excel давно стала притчей во языцех. В том плане, что ее, по-сути, нет. С регулярностью примерно раз в месяц я получаю вопросы по почте на тему «как мне защитить мои данные на листе Excel от просмотра/изменения?» и каждый раз не знаю что ответить. Можно, конечно, дать ссылочку на статью с подробным описанием всех способов защиты ячеек и листов в Excel, но такая защита остановит только начинающего. В сети можно найти кучу платных и бесплатных программ для взлома такой защиты тупым перебором за считанные минуты.

В какой-то момент мне это надоело и я стал искать способы более надежной защиты данных в Excel собственными силами. Самым простым и удобным оказался шифр Виженера.

Принцип шифра Виженера

Одним из самых древних и простых в реализации является шифр Цезаря, который использовал его для тайной переписки. Суть его в том, что каждая буква исходного шифруемого сообщения сдвигается в алфавите на заданное количество символов. Так, например, если сдвиг равен 3, то буква А превратится в Г, буква Б — в Д и так далее:

Шифр Цезаря

Символы в конце алфавита (Э, Ю, Я), соответственно, будут превращаться его начало (А, Б, В).

Реализовать такой шифр просто, но стойкость его невелика — найти нужное число сдвига и дешифровать сообщение можно даже прямым перебором за 20-30 итераций, что займет даже у человека не больше часа, а у современного компьютера доли секунды. Поэтому еще в 15 веке был впервые придуман, а потом в 16 веке французским дипломатом Блезом Виженером официально представлен более совершенный метод на основе шифра Цезаря, получивший впоследствии название «шифр Виженера». Его принцип в том, что каждая буква в исходном шифруемом тексте сдвигается по алфавиту не на фиксированное, а переменное количество символов. Величина сдвига каждой буквы задается ключом (паролем) — секретным словом или фразой, которая используется для шифрования и расшифровки. 

Допустим, мы хотим зашифровать фразу «КЛАД ЗАРЫТ В САДУ» используя слово ЗИМА в качестве ключа. Запишем это слово подряд несколько раз под исходной фразой:

vigenere-encription2.png

Для удобства шифрования используем так называемый «квадрат Виженера» — таблицу, где в каждой строке алфавит сдвигается на одну позицию вправо:

квадрат виженера

Если взять строку с первой буквой ключа (З) и столбец с первой буквой исходного текста (К), то на их пересечении увидим букву «Т» — это и будет первая буква нашего зашифрованного сообщения. Затем процедура повторяется для всех остальных пар букв ключа и исходного сообщения по очереди и в результате мы получаем зашифрованный вариант нашей исходной фразы:

шифр виженера результат

Заметьте, что одна и та же буква (например А) в исходном сообщений превратилась в разные буквы на выходе (Н, Й и Б), т.к. сдвиг при шифровании для них был разный. Именно поэтому вскрыть шифр Виженера простыми способами невозможно — вплоть до 19 века он считался невзламываемым и успешно использовался военными, дипломатами и шпионами многих стран, частности — конфедератами во время Гражданской войны в США.

Реализация формулами по квадрату Виженера

Если использовать готовый квадрат Виженера как в примере выше, то реализовать шифрование можно одной формулой с помощью функций ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH), как это было описано в статье про двумерный поиск в таблице. Выглядеть это может примерно так:

vigenere-encription5.png

Логика этой формулы следующая:

  • Первая функция ПОИСКПОЗ (подсвечена зеленым) ищет первую букву ключа (З) в зеленом столбце (B9:B40) и выдает порядковый номер ячейки, где она ее нашла, т.е. номер строки в квадрате Виженера по которому идет шифрование.
  • Вторая функция ПОИСКПОЗ (подсвечена розовым) аналогичным образом ищет первую букву исходного сообщения (К) в красной строке и выдает порядковый номер столбца.
  • Функция ИНДЕКС выдает содержимое ячейки из квадрата (C9:AH40) с пересечения строки и столбца с найденными номерами.

Реализация формулами по кодам символов

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

Внутри компьютера и операционной системы каждый символ имеет свой числовой код от 0 до 255 (его еще называют ASCII-кодом). Microsoft Excel имеет в своем стандартном наборе две функции, которые умеют с ними работать:

  • Функция КОДСИМВ (CODE) — выдает числовой код символа, указанного в качестве аргумента. Например КОДСИМВ(«Ж») выдаст 198.
  • Функция СИМВОЛ (CHAR) — выдает символ, соответствующий указанному в аргументе коду, т.е. наоборот СИМВОЛ(198) даст нам букву Ж. 

Для применения шифра Виженера запишем наш исходный текст и ключ друг под другом как раньше и выведем коды каждой буквы с помощью функции КОДСИМВ:

vigenere-encription6.png

Теперь сложим коды символов ключа и исходного текста, добавив функцию ОСТАТ (MOD), чтобы при превышении максимально допустимого количества символов (256) остаться в пределах 0-255:

vigenere-encription7.png

Теперь осталось использовать функцию СИМВОЛ, чтобы вывести символы по полученным кодам и сформировать зашифрованное сообщение:

vigenere-encription8.png

Само-собой, можно было бы обойтись и без дополнительных строк, уложив все функции в одну формулу для компактности:

vigenere-encription9.png

Расшифровка производится совершенно аналогично, только знак «плюс» в формуле меняется на «минус»:

vigenere-encription10.png

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

Макросы для шифрования-дешифрования

Ну, а теперь самое интересное. Чтобы применить шифр Виженера в реальной жизни лучше будет воспользоваться простым макросом, который проводит все описанные в предыдущем пункте операции с каждой ячейкой текущего листа автоматически. Откройте редактор Visual Basic с помощью сочетания клавиш Alt+F11 или кнопкой Visual Basic на вкладке Разработчик (Developer). Вставьте новый модуль с помощью команды меню Insert — Module и скопируйте туда текст наших макросов:

 
'Шифрование текущего листа
Sub Encrypt()
    Dim Pass$, Key$
    Pass = InputBox("Введите ключ для шифрования:")
    Key = WorksheetFunction.Rept(Pass, 100)
    
    For Each cell In ActiveSheet.UsedRange
        Out = ""
        Txt = cell.Formula
        For i = 1 To Len(Txt)
            Out = Out & Chr((Asc(Mid(Txt, i, 1)) + Asc(Mid(Key, i, 1))) Mod 256)
        Next i
        cell.Value = Out
    Next cell
End Sub

'Дешифрация текущего листа
Sub Decrypt()
    Dim Pass$, Key$
    Pass = InputBox("Введите ключ для расшифровки:")
    Key = WorksheetFunction.Rept(Pass, 100)
    
    For Each cell In ActiveSheet.UsedRange
        Out = ""
        Txt = cell.Value
        For i = 1 To Len(Txt)
            Out = Out & Chr((Asc(Mid(Txt, i, 1)) - Asc(Mid(Key, i, 1)) + 256) Mod 256)
        Next i
        cell.Formula = Out
    Next cell
End Sub
 

Первый макрос запрашивает у пользователя ключ и шифрует все ячейки текущего листа. Второй макрос производит обратную операцию дешифрования. Запустить получившиеся макросы можно с помощью сочетания клавиш Alt+F8 или кнопки Макросы (Macros) на вкладке Разработчик (Developer). Выглядеть все это может примерно так:

vigenere-encryption11.gif

Важные нюансы

  • ВНИМАНИЕ! Если вы внимательно прочитали статью, то должны четко понимать — не существует легкого способа узнать или подобрать ключ! Есть несколько методик взлома шифра Виженера, но все они весьма сложны для неспециалиста и не дают 100% гарантии. Если вы забудете ключ — потеряете данные навсегда с большой вероятностью. Если что — я вас предупредил.
  • При шифровании не нарушаются формулы, ссылки и форматирование — после дешифрации все отлично работает.
  • Если при дешифрации вы неправильно введете ключ, то получите бессмысленную «кашу» из спецсимволов вместо своего текста (т.к. сдвиг кодов будет неправильным). Тогда придется откатиться на шаг назад повторным шифрованием с тем же паролем и потом снова попробовать расшифровать документ еще раз (на этот раз используя правильный ключ).

Ссылки по теме

  • 4 способа защиты данных в Microsoft Excel
  • Суперскрытый лист в книге Excel
  • Выборочное отображение листов книги пользователям по паролю

Лабораторная
работа № 5

Методы
защиты информации. Шифр Цезаря.

Цель
работы
:
Освоить технологию шифрования и
дешифрования

информации
в среде Excel с использованием шифра
Цезаря.

5.1.
Теоретическая
часть

Шифр
Цезаря является частным случаем шифра
простой замены (одно алфавитной
подстановки). Свое название этот шифр
получил по имени римского

императора
Гая Юлия Цезаря, который использовал
этот шифр при переписке.

При
шифровании исходного текста каждая
буква заменяется другой буквой того же
алфавита по следующему правилу. Заменяющая
буква определяется путем смещения по
алфавиту к концу от исходной буквы на
k
букв.
При достижении конца алфавита выполняется
циклический переход к его началу.

Например:
пусть A

используемый алфавит:

A={a1,
a2,…,am,…,aN},

где
a1,
a2,…,am,…,aN

символы
алфавита;
N
ширина
алфавита.

Пусть
k

число позиций сдвига символов алфавита
при шифровании,

0<k<N.
При шифровании каждый символ алфавита
с номером m
из
кодируемого текста заменяется на символ
этого же алфавита с номером m+k.
Если m+k>N,
номер символа в алфавите A
определяется
как m+kN.

Для
дешифрования текстовой информации
номер позиции символа восстанавливаемого
текста определяется как mk.
Если mk<0,
то вычисление этого

номера
производится как mk+N.

Достоинством
этой системы является простота шифрования
и

дешифрования.
К недостаткам системы Цезаря следует
отнести:


подстановки, выполняемые в соответствии
с системой Цезаря, не маскируют частот
появления различных букв исходного и
отрытого текста;


сохраняется алфавитный порядок в
последовательности заменяющих букв;

при
изменении значения k
изменяются
только начальные позиции такой
последовательности;


число возможных ключей k
мало;


шифр Цезаря легко вскрывается на основе
анализа частот появления букв в

шифре.

5.2.
Порядок выполнения лабораторной работы

1.
Войти в среду Excel. Создать новый документ,
перейти на второй лист этого

документа.
Начиная с ячейки A1
до A40
набрать алфавит, как показано на рисунке
5.1”а”. Выделить весь диапазон алфавита
и назначить ему имя “ABC”.

2.
На первом листе документа в ячейке B1
набрать текст, который необходимо

зашифровать,
например: Гай
Юлий Цезарь
:”Пришел,
увидел,
победил!
При

наборе
текста необходимо использовать только
те символы, которые входят в

алфавит.

3.
В ячейке B3 записать формулу «=ПРОПИСН(B1)»,
функция ПРОПИСН переводит буквенные
символы в строке в прописные буквы.

4.
В ячейке D3 записать формулу «=ДЛСТР(B3)»,
функция ДЛСТР позволяет

определить
длину строки, что необходимо пользователю,
для кодировки исходной строки.

5.
В ячейку D4 записать значение k,
например, 5.

6.
В столбце А, начиная с ячейки А6,
пронумеровать ячейки числами
последовательного ряда от 1 до N, где N –
число символов в тексте, включая пробелы.
N рассчитано в ячейке D3.

7.
В ячейку B6, записать формулу
“=ПСТР(B$3;A6;1)”, которая разделяет
кодируемый текст на отдельные символы.
Скопировать эту формулу в ячейки В7-

В48.

8.
В ячейку C6 записать формулу
“=ПОИСКПОЗ(B6;ABC;0)”. Функция ПОИСКПОЗ
производит поиск индекса (номера позиции)
символа в массиве ABC, который был определен
на листе 2. Скопировать содержимое ячейки
C6 в ячейки

C7-C48.

9.
Получив номер символа в алфавите ABC,
произвести сдвиг нумерации алфавита
для кодируемой последовательности
символов. В ячейку D6 записать

формулу:

“=ЕСЛИ(ПОИСКПОЗ(B6;ABC;0)+$D$4>40;ПОИСКПОЗ(B6;ABC;0)+$D$4-

40;ПОИСКПОЗ(B6;ABC;0)+$D$4)”.
(5.1)

Эта
формула производит сдвиг номеров
символов алфавита на величину k
и

определяет
номер заменяющего символа из алфавита
ABC. Содержимое D6

скопировать
в область D7-D48.

10.
Выбрать символы из алфавита ABC в
соответствии с новыми номерами. В

ячейку
E6 записать формулу “=ИНДЕКС(ABC;D6)”.
Скопировать содержимое

ячейки
E6 в область E7-E48.

11.
Для получения строки закодированного
текста необходимо в ячейку F6 записать
“=E6”, в ячейку F7 соответственно –
“=F6&E7”. Далее скопировать содержимое
ячейки F7, в область F8-F48. В ячейке F48
прочитать зашифрованный

текст.

12.
Для проверки шифрования произвести
дешифрование полученного текста и

сравнить
его с исходным. На третьем листе выполнить
дешифрование аналогично пунктам 2-11
лабораторной работы. При этом необходимо
учесть следующие особенности:

в
п. 2 набрать зашифрованный текст;

в
п. 9 в ячейку D6 записать формулу:

=ЕСЛИ(ПОИСКПОЗ(B6;ABC;0)-$D$4<0;ПОИСКПОЗ(B6;ABC;0)-

$D$4+40;ПОИСКПОЗ(B6;ABC;0)-$D$4).
(5.2)

Получение
исходного текста в ячейке F48 третьей
страницы свидетельствует

о
корректном выполнении лабораторной
работы.

5.3.
Контрольные
вопросы
:

1.
В чем заключается принцип защиты
информации с использованием шифра
Цезаря?

2.
Объяснить формулы (5.1) и (5.2).

3.
Можно ли использовать программы настоящей
лабораторной работы для

шифрования
другой информации? Если да, то, каким
образом?

4.
В чем достоинства и недостатки шифра
Цезаря?

5.
Какие еще методы защиты информации Вам
известны?

а)

б)

в)

г)

Рис.
5.1. — Фрагменты документов Excel по
лабораторной работе № 5:

а)
алфавит символов шифра Цезаря; б)
начальная часть документа

шифрования;
в) и г) начальная и конечная часть
документа дешифрования__

Соседние файлы в папке Excel

  • #

    16.03.20163.82 Mб317Phones.xls

  • #
  • #

    16.03.20163.82 Mб75Копия Phones.xls

  • #
  • #
  • #

Предположим, у вас есть список слов, и вам нужно зашифровать все буквы в этих словах для некоторых целей, как показано на скриншоте ниже. Пожалуйста, попробуйте методы, описанные в этой статье.

Скремблируйте буквы в словах с помощью определяемой пользователем функции
Легко перепутать буквы в словах с помощью Kutools for Excel


Скремблируйте буквы в словах с помощью определяемой пользователем функции

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

1. нажмите другой + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно,

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули, затем скопируйте и вставьте приведенный ниже код VBA в Code окно. Смотрите скриншот:

Код VBA: зашифровывать буквы в словах

Function Scramble(oldname)
    On Error Resume Next
    n = Len(oldname)
    newname = ""
    Do
        i = Int(Rnd() * n) + 1
        c = Mid(oldname, i, 1)
        If c <> "*" Then
            newname = newname & c
            oldname = Replace(oldname, c, "*", , 1)
        End If
    Loop Until Len(newname) = n
    Scramble = LCase(newname)
End Function

3. Затем нажмите другой + Q ключи, чтобы закрыть Microsoft Visual Basic для приложений окно.

4. Выберите пустую ячейку для поиска перевернутых букв, затем введите формулу. = схватка (A2) в строку формул и нажмите Enter ключ. Продолжайте выделять ячейку результата и перетащите ее маркер заполнения вниз, чтобы получить все результаты. Смотрите скриншот:

Внимание: A2 — это ячейка, содержащая слово, необходимое для шифрования букв. Пожалуйста, измените его по своему усмотрению.


Легко перепутать буквы в словах с помощью Kutools for Excel

Здесь рекомендую полезную надстройку — Kutools for Excel, С этими Обратный порядок текста Утилита, вы можете легко зашифровать буквы указанных ячеек всего за несколько кликов.

1. Выделите ячейки, внутри которых нужно перемешать буквы, затем нажмите Кутулс > Текст > Обратный порядок текста. Смотрите скриншот:

2. в Обратный текст диалоговом окне укажите разделитель, на основе которого вы будете шифровать буквы в Разделитель раздел, а затем щелкните OK кнопку.

Теперь выбранные слова немедленно зашифровываются, как показано на скриншоте ниже.

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Статьи по теме:

  • Как условно форматировать ячейки на основе первой буквы / символа в Excel?
  • Как сделать все буквы в ячейке или столбце в Excel заглавными?
  • Как фильтровать значения по первой букве или последнему символу в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (5)


Оценок пока нет. Оцените первым!

Основные понятия криптографии

Теперь, когда даны основные определения, рассмотрим одну из простейших систем шифрования, которая носит имя » шифр Юлия Цезаря». Предполагается, что знаменитый римский император и полководец, живший в 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 п. Победа Адыгея

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

специалист

Мнение эксперта

Витальева Анжела, консультант по работе с офисными программами

Со всеми вопросами обращайтесь ко мне!

Задать вопрос эксперту

Алгоритм шифрования транспонирования это метод, при котором алфавитный порядок в открытом тексте перестраивается для формирования зашифрованного текста. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!

Цезарь даже предпринял шаги, чтобы превратить Италию в провинцию и более тесно связать другие провинции империи в единое целое. Этот процесс объединения всей Римской империи в единое целое, а не сохранения ее как сети неравных княжеств, в конечном итоге будет завершен преемником Цезаря, императором Августом.
Шифр Цезаря в Excel Пошаговая Инструкция • Собственные сочинения

Юлий ЦезарьРанняя жизнь и карьера а также Консульство и военные кампании

Светоний , писавший более века спустя после смерти Цезаря, описывает Цезаря как «высокого роста, со светлым лицом, стройными конечностями, несколько полным лицом и проницательными черными глазами». [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 и так далее. Этот метод назван в честь Юлия Цезаря, который использовал его для общения с официальными лицами.

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

 Давайте теперь предусмотрим случай, если наш пароль будет состоять из двух слов с пробелом. Пробел плохо воспринимается функциями 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) для ключа.

Результат можно посмотреть на рисунке.

шифрование пароля в excel

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

После того как мы получили ряд чисел, переходим к решению третьей задачи – переводу числовых значений в символы латинского алфавита, цифры и спецсимволы.

Для перевода будем использовать функцию ИНДЕКС которая  возвращает значение элемента таблицы или массива, заданного номером строки и номером столбца.

=ИНДЕКС(массив; номер_строки; [номер столбца])

И созданную нами  одномерную таблицу символов из одного столбца и количеством строк по числу используемых нами символов. Таблица символов будет состоять из строчных и заглавных латинских букв, чисел от 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).

шифрование пароля в excel

Поскольку мы решили сделать в нашем примере возможность выбора между 8 и 16 символами, то добавляем соответствующий элемент управления – «Переключатель».

Добавить Переключатель на лист можно через вкладку Разработчик→ группа Элементы управления→ команда ВставитьЭлементы управления формыПереключатель.

шифрование пароля в excel

Настраиваем переключатель следующим образом:

Правой кнопкой мыши кликаем на переключателе и в появившемся контекстном меню выбираем пункт Формат объекта. В появившемся диалоговом окне Формат элемента управления на вкладке Элемент управления  в поле Связь с ячейкой устанавливаем связь с ячейкой D12.

шифрование пароля в excel

Теперь, поскольку у нас всего два переключателя, то когда установлен первый, в ячейке 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. Скрываем все вспомогательные данные на листе, устанавливая формат данных «;;;» и защищаем лист.

шифрование пароля в excel

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

Скачать

Пароль, шифрование

На чтение 2 мин. Просмотров 14 Опубликовано 23.05.2021

Предположим, у вас есть список слов, и вам нужно зашифровать все буквы в этих словах для некоторых целей, как показано на скриншоте ниже. Попробуйте методы, описанные в этой статье.

Скремблируйте буквы в словах с помощью определяемой пользователем функции
Легко шифруйте буквы в словах с помощью Kutools for Excel


Содержание

  1. Скремблирование букв в словах с помощью пользовательской функции
  2. Легко зашифровывать буквы в словах с помощью Kutools for Excel
  3. Статьи по теме:

Скремблирование букв в словах с помощью пользовательской функции

Потрясающе! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Сэкономьте 50% своего времени и уменьшите тысячи щелчков мышью каждый день!

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

1. Одновременно нажмите клавиши Alt + F11 , чтобы открыть окно Microsoft Visual Basic для приложений ,

2. В окне Microsoft Visual Basic для приложений нажмите Вставить > Модуль , затем скопируйте и вставьте приведенный ниже код VBA в окно Код . См. Снимок экрана:

Код VBA: зашифровывать буквы в словах

3. Затем нажмите клавиши Alt + Q , чтобы закрыть окно Microsoft Visual Basic для приложений .

4. Выберите пустую ячейку для поиска перевернутых букв, затем введите формулу = схватка (A2) в строку формул и нажмите клавишу Enter . Продолжайте выделять ячейку результата и перетащите ее маркер заполнения вниз, чтобы получить все результаты. См. Снимок экрана:

Примечание : ячейка A2 содержит слово, необходимое для шифрования букв. Измените его по своему усмотрению.


Легко зашифровывать буквы в словах с помощью Kutools for Excel

Здесь я рекомендую полезную надстройку – Kutools for Excel . С помощью утилиты Обратный порядок текста вы можете легко зашифровать буквы указанных ячеек всего несколькими щелчками мыши.

Перед применением Kutools for Excel , сначала загрузите и установите его .

1. Выделите ячейки, внутри которых вам нужно перемешать буквы, затем нажмите Kutools > Текст > Обратный порядок текста . См. Снимок экрана:

2. В диалоговом окне Обратный текст укажите разделитель, на основе которого вы будете шифровать буквы, в разделе Separator , а затем нажмите ОК кнопка .

Теперь выбранные слова зашифровываются сразу, как показано на скриншоте ниже. .

Если вы хотите получить бесплатную пробную версию (30 -day) этой утилиты, щелкните, чтобы загрузить его , а затем перейдите к применению операции в соответствии с указанными выше шагами.


Статьи по теме :

  • Как условно форматировать ячейки на основе первой буквы/символа в Excel?
  • Как сделать все буквы в ячейке или столбце в Excel заглавными?
  • Как отфильтровать значения по первой букве или последнему символу в Excel?

2 / 2 / 0

Регистрация: 05.06.2014

Сообщений: 18

1

10.10.2014, 17:39. Показов 12107. Ответов 19


Студворк — интернет-сервис помощи студентам

Помогите с заданием, пожалуйста. Не знаю с чего начать? как лучше реализовать алгоритм?

Составить процедуру, которая позволяет зашифровать слово из клетки А11. Зашифрованное слово помещается в клетку В11. Принцип шифрования следующий: имеется «новый» алфавит, представляющий собой некоторую строку — перестановку букв алфавита. Если некоторая буква является k-той буквой в обычном алфавите, то вместо нее должна быть взята буква из k-той позиции «нового» алфавита.



0



2 / 2 / 0

Регистрация: 05.06.2014

Сообщений: 18

10.10.2014, 17:52

 [ТС]

2

Составить процедуру, которая позволяет зашифровать слово из клетки А11. Зашифрованное слово помещается в клетку В11. Принцип шифрования следующий: имеется «новый» алфавит, представляющий собой некоторую строку — перестановку букв алфавита. Если некоторая буква является k-той буквой в обычном алфавите, то вместо нее должна быть взята буква из k-той позиции «нового» алфавита.



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

10.10.2014, 18:41

3

Шифрование заменой с использованием таблиц?



0



2 / 2 / 0

Регистрация: 05.06.2014

Сообщений: 18

10.10.2014, 18:43

 [ТС]

4

Нет, без всяких таблиц



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

10.10.2014, 18:51

5

По-моему принцип один и тот же

Миниатюры

Зашифровать слово из ячейки Excel обобщенным шифром подстановки
 



0



2 / 2 / 0

Регистрация: 05.06.2014

Сообщений: 18

10.10.2014, 19:07

 [ТС]

6

Ну можно и так, наверное. Но для меня главнее понять алгоритм работы с текстовыми функциями, такие как Mid,Len и т.п. Как я представляю задачу: у меня есть мой особенный алфавит. Я ввожу в ячейку слово, программа обращается в ячейку, перебирает все буквы, сопоставляет порядковый номер буквы с её порядковым номером в нормальном алфавите и заменяет. Вот для меня тяжело как-то сформировать собственный алфавит? Может через код Asc и соответствующую функцию? Использовать рандом? совсем запуталась(



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

10.10.2014, 19:10

7

Цитата
Сообщение от куу30
Посмотреть сообщение

Вот для меня тяжело как-то сформировать собственный алфавит?

Нужно взять «нормальный» алфавит и перемешать случайным образом



0



2 / 2 / 0

Регистрация: 05.06.2014

Сообщений: 18

10.10.2014, 19:13

 [ТС]

8

Тогда ведь его надо как-то закрепить? чтобы определенная буква означала только одну букву в перемешанном алфавите. Т.е. если «а» имела, допустим шифр «Ы», то сколько бы я не написала «а» в слове, всегда было «Ы»



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

10.10.2014, 19:26

9

Можно генерировать рандомно от какого либо числа(ключа) чтобы перемешанный алфавит был всегда одинаков



0



2 / 2 / 0

Регистрация: 05.06.2014

Сообщений: 18

10.10.2014, 19:33

 [ТС]

10

К сожалению, у меня пока нет таких знаний, чтобы реализовать это. Спасибо за вашу помощь)

Добавлено через 1 минуту
Я, кстати, вообще никогда не работала с буквенным рандомом. Буду изучать..



0



SoftIce

es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

10.10.2014, 19:42

11

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

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Explicit
 
 
 
Sub Main()
    MsgBox GetNewAllabet(777) '777 - это число взято с потолка, является ключом к генерированию определенной последовательности
End Sub
 
Private Function GetNewAllabet(key As Integer)
    Dim i As Integer, ArrAlfaBet() As String
    Const AlfaBet As String = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" & _
                          "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" & _
                          "1234567890.,<>:;!@#$%^&*()_+-=?/}{][|' "
    ReDim ArrAlfaBet(1 To Len(AlfaBet))
    For i = 1 To Len(AlfaBet)
        ArrAlfaBet(i) = Mid(AlfaBet, i, 1)
    Next i
    Unsort ArrAlfaBet, key
    GetNewAllabet = Join(ArrAlfaBet, "")
End Function
'Процедура перемешивания массива случайным образом
Private Sub Unsort(list() As String, key As Integer)
Dim i As Long
Dim pos As Long, min As Long
Dim tmp As String, max As Long
Rnd (-key)
min = LBound(list): max = UBound(list)
    For i = min To max - 1
        pos = Int((max - i + 1) * Rnd + i)
        tmp = list(pos)
        list(pos) = list(i)
        list(i) = tmp
    Next i
End Sub



0



11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

10.10.2014, 20:12

12

Другого и быть не может:
Организовать цикл по всем элементам строки с заменой каждой буквы буквой из нового алфафита.



0



SoftIce

es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

10.10.2014, 20:26

13

Вариант

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Option Explicit
Const KeyWord As Integer = 777 '777 - это число является ключом к генерированию определенной последовательности
Const AlfaBet As String = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя1234567890"
                          
Sub Main()
    Dim S As String, St As String, i As Integer
    Cells(4, 1) = AlfaBet                'в ячейку А4 выводим  алфавит
    Cells(5, 1) = GetNewAlfaBet(KeyWord) 'в ячейку А5 выводим перемешанный алфавит
    
    'шифровка
    S = Cells(11, 1) 'берем строку из ячейки А11
    For i = 1 To Len(S)  'Заменяем символы строки символами нового алфавита
            St = St & Mid(AlfaBet, (InStr(1, GetNewAlfaBet(KeyWord), Mid(S, i, 1))), 1)
    Next i
    Cells(11, 2) = St 'зашифрованное слово выводим в ячейку В11
    St = ""
    
    'а теперь дещифровка
    S = Cells(11, 2) 'берем зашифрованную строку из ячейки B11
    For i = 1 To Len(S)  'Заменяем символы зашифрованной строки символами из алфавита
            St = St & Mid(GetNewAlfaBet(KeyWord), (InStr(1, AlfaBet, Mid(S, i, 1))), 1)
    Next i
    Cells(11, 3) = St 'дешифрованное слово выводим в ячейку С11
End Sub
 
'функция возвращает перемешанный алфавит
Private Function GetNewAlfaBet(key As Integer) As String
    Dim i As Integer, ArrAlfaBet() As String
    ReDim ArrAlfaBet(1 To Len(AlfaBet))
    For i = 1 To Len(AlfaBet)
        ArrAlfaBet(i) = Mid(AlfaBet, i, 1)
    Next i
    Unsort ArrAlfaBet, key
    GetNewAlfaBet = Join(ArrAlfaBet, "")
End Function
 
'Процедура перемешивания массива случайным образом
Private Sub Unsort(list() As String, key As Integer)
Dim i As Long
Dim pos As Long, min As Long
Dim tmp As String, max As Long
Rnd (-key)
min = LBound(list): max = UBound(list)
    For i = min To max - 1
        pos = Int((max - i + 1) * Rnd + i)
        tmp = list(pos)
        list(pos) = list(i)
        list(i) = tmp
    Next i
End Sub

Миниатюры

Зашифровать слово из ячейки Excel обобщенным шифром подстановки
 



0



2 / 2 / 0

Регистрация: 05.06.2014

Сообщений: 18

10.10.2014, 20:52

 [ТС]

14

Спасибо Вам огромное) Сейчас всё детально разберу, пойму! Мне бы вам передать хоть шоколадку)



0



SoftIce

es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

10.10.2014, 21:18

15

Кстати, если строго следовать условиям задачи

имеется «новый» алфавит, представляющий собой некоторую строку — перестановку букв алфавита

перемешанный алфавит уже имеется, и генерировать его не обязательно. Поэтому код можно несколько сократить

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Option Explicit
                          
Sub Main()
    Dim AlphaBet As String, NewAlphaBet As String, S As String, St As String, i As Integer
    
    AlphaBet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя1234567890"
    NewAlphaBet = "фом3б5ы6уп9ъ2ёащлйючяэеивьтз4н0ш8с1кгж7дрхц"
    
    Cells(4, 1) = AlphaBet     'в ячейку А4 выводим  алфавит
    Cells(5, 1) = NewAlphaBet 'в ячейку А5 выводим перемешанный алфавит
 
    'шифровка
    S = Cells(11, 1) 'берем строку из ячейки А11
    For i = 1 To Len(S)  'Заменяем символы строки символами нового алфавита
            St = St & Mid(NewAlphaBet, (InStr(1, AlphaBet, Mid(S, i, 1))), 1)
    Next i
    Cells(11, 2) = St 'зашифрованное слово выводим в ячейку В11
    St = ""
    
    'а теперь дещифровка
    S = Cells(11, 2) 'берем зашифрованную строку из ячейки B11
    For i = 1 To Len(S)  'Заменяем символы зашифрованной строки символами из алфавита
            St = St & Mid(AlphaBet, (InStr(1, NewAlphaBet, Mid(S, i, 1))), 1)
    Next i
    Cells(11, 3) = St 'дешифрованное слово выводим в ячейку С11
End Sub

Еще хочу заметить, что если в ячейке встретится символ, отсутствующий в алфавите, то скорее всего возникнет ошибка



0



2 / 2 / 0

Регистрация: 05.06.2014

Сообщений: 18

11.10.2014, 13:34

 [ТС]

17

Большое спасибо)



0



2 / 2 / 0

Регистрация: 05.06.2014

Сообщений: 18

11.10.2014, 13:35

 [ТС]

18

Большое спасибо Вам! Разобралась, поняла) Теперь смело можно сдавать работу)



0



5561 / 1367 / 150

Регистрация: 08.02.2009

Сообщений: 4,107

Записей в блоге: 30

11.10.2014, 20:40

19



1



2 / 2 / 0

Регистрация: 05.06.2014

Сообщений: 18

11.10.2014, 21:44

 [ТС]

20

Спасибо)



0



Понравилась статья? Поделить с друзьями:
  • Зачетные работы по информатике word
  • Зачетное задание по microsoft word
  • Зачетное задание по excel
  • Зачетная работа по теме электронные таблицы excel
  • Зачетная работа по теме текстовый редактор word