Данные в Excel можно защищать от постороннего вмешательства. Это важно, потому что иногда вы тратите много времени и сил на создание сводной таблицы или объемного массива, а другой человек случайно или намеренно изменяет либо вовсе удаляет все ваши труды.
Рассмотрим способы защиты документа Excel и его отдельных элементов.
Защита ячейки Excel от изменения
Как поставить защиту на ячейку в Excel? По умолчанию все ячейки в Excel защищаемые. Это легко проверить: кликаем на любую ячейку правой кнопкой, выбираем ФОРМАТ ЯЧЕЕК – ЗАЩИТА. Видим, что галочка на пункте ЗАЩИЩАЕМАЯ ЯЧЕЙКА проставлена. Но это еще не значит, что они уже защищены от изменений.
Зачем нам эта информация? Дело в том, что в Excel нет такой функции, которая позволяет защитить отдельную ячейку. Можно выбрать защиту листа, и тогда все ячейки на нем будут защищены от редактирования и другого вмешательства. С одной стороны это удобно, но что делать, если нам нужно защитить не все ячейки, а лишь некоторые?
Рассмотрим пример. Имеем простую таблицу с данными. Такую таблицу нам нужно разослать в филиалы, чтобы магазины заполнили столбец ПРОДАННОЕ КОЛИЧЕСТВО и отправили обратно. Во избежание внесения каких-то изменений в другие ячейки, защитим их.
Для начала освободим от защиты те ячейки, куда сотрудники филиалов будут вносить изменения. Выделяем D4:D11, правой кнопкой вызываем меню, выбираем ФОРМАТ ЯЧЕЕК и убираем галочку с пункта ЗАЩИЩАЕМАЯ ЯЧЕЙКА.
Теперь выбираем вкладку РЕЦЕНЗИРОВАНИЕ – ЗАЩИТИТЬ ЛИСТ. Появляется такое окно, где будут проставлены 2 галочки. Первую из них мы убираем, чтобы исключить любое вмешательство сотрудников филиалов, кроме заполнения столбца ПРОДАННОЕ КОЛИЧЕСТВО. Придумываем пароль и нажимаем ОК.
Внимание! Не забудьте свой пароль!
Теперь в диапазон D4:D11 посторонние лица смогут только вписать какое-то значение. Т.к. мы ограничили все остальные действия, никто не сможет даже изменить цвет фона. Все средства форматирования на верхней панели инструментов не активные. Т.е. они не работают.
Защита книги Excel от редактирования
Если на одном компьютере работает несколько человек, то целесообразно защищать свои документы от редактирования третьими лицами. Можно ставить защиту не только на отдельные листы, но и на всю книгу.
Когда книга будет защищена, посторонние смогут открывать документ, видеть написанные данные, но переименовать листы, вставить новый, поменять их расположение и т.п. Попробуем.
Прежнее форматирование сохраняем. Т.е. у нас по-прежнему можно вносить изменения только в столбец ПРОДАННОЕ КОЛИЧЕСТВО. Чтобы защитить книгу полностью, на вкладке РЕЦЕНЗИРОВАНИЕ выбираем ЗАЩИТИТЬ КНИГУ. Оставляем галочки напротив пункта СТРУКТУРУ и придумываем пароль.
Теперь, если мы попробуем переименовать лист, у нас это не получится. Все команды серого цвета: они не работают.
Снимается защита с листа и книги теми же кнопками. При снятии система будет требовать тот же пароль.
Содержание
- Включение блокирования ячеек
- Способ 1: включение блокировки через вкладку «Файл»
- Способ 2: включение блокировки через вкладку «Рецензирование»
- Разблокировка диапазона
- Вопросы и ответы
При работе с таблицами Excel иногда возникает потребность запретить редактирование ячейки. Особенно это актуально для диапазонов, где содержатся формулы, или на которые ссылаются другие ячейки. Ведь внесенные в них некорректные изменения могут разрушить всю структуру расчетов. Производить защиту данных в особенно ценных таблицах на компьютере, к которому имеет доступ и другие лица кроме вас, просто необходимо. Необдуманные действия постороннего пользователя могут разрушить все плоды вашей работы, если некоторые данные не будут хорошо защищены. Давайте взглянем, как именно это можно сделать.
Включение блокирования ячеек
В Экселе не существует специального инструмента, предназначенного для блокировки отдельных ячеек, но данную процедуру можно осуществить с помощью защиты всего листа.
Способ 1: включение блокировки через вкладку «Файл»
Для того, чтобы защитить ячейку или диапазон нужно произвести действия, которые описаны ниже.
- Выделите весь лист, кликнув по прямоугольнику, который находится на пересечении панелей координат Excel. Кликните правой кнопкой мыши. В появившемся контекстном меню перейдите по пункту «Формат ячеек…».
- Откроется окно изменения формата ячеек. Перейдите во вкладку «Защита». Снимите галочку около параметра «Защищаемая ячейка». Нажмите на кнопку «OK».
- Выделите диапазон, который желаете заблокировать. Опять перейдите в окно «Формат ячеек…».
- Во вкладке «Защита» поставьте галочку у пункта «Защищаемая ячейка». Кликните по кнопке «OK».
Но, дело в том, что после этого диапазон ещё не стал защищенным. Он станет таковым только тогда, когда мы включим защиту листа. Но при этом, изменять нельзя будет только те ячейки, где мы установили галочки в соответствующем пункте, а те, в которых галочки были сняты, останутся редактируемыми.
- Переходим во вкладку «Файл».
- В разделе «Сведения» кликаем по кнопке «Защитить книгу». В появившемся списке выбираем пункт «Защитить текущий лист».
- Открываются настройки защиты листа. Обязательно должна стоять галочка около параметра «Защитить лист и содержимое защищаемых ячеек». При желании можно установить блокирование определенных действий, изменяя настройки в параметрах, находящихся ниже. Но, в большинстве случаев, настройки выставленные по умолчанию, удовлетворяют потребностям пользователей по блокировке диапазонов. В поле «Пароль для отключения защиты листа» нужно ввести любое ключевое слово, которое будет использоваться для доступа к возможностям редактирования. После того, как настройки выполнены, жмем на кнопку «OK».
- Открывается ещё одно окно, в котором следует повторить пароль. Это сделано для того, чтобы, если пользователь в первый раз ввел ошибочный пароль, тем самым навсегда не заблокировал бы сам себе доступ к редактированию. После ввода ключа нужно нажать кнопку «OK». Если пароли совпадут, то блокировка будет завершена. Если они не совпадут, то придется производить повторный ввод.
Теперь те диапазоны, которые мы ранее выделили и в настройках форматирования установили их защиту, будут недоступны для редактирования. В остальных областях можно производить любые действия и сохранять результаты.
Способ 2: включение блокировки через вкладку «Рецензирование»
Существует ещё один способ заблокировать диапазон от нежелательного изменения. Впрочем, этот вариант отличается от предыдущего способа только тем, что выполняется через другую вкладку.
- Снимаем и устанавливаем флажки около параметра «Защищаемая ячейка» в окне формата соответствующих диапазонов точно так же, как мы это делали в предыдущем способе.
- Переходим во вкладку «Рецензирование». Кликаем по кнопке «Защитить лист». Эта кнопка расположена в блоке инструментов «Изменения».
- После этого открывается точно такое же окно настроек защиты листа, как и в первом варианте. Все дальнейшие действия полностью аналогичные.
Урок: Как поставить пароль на файл Excel
Разблокировка диапазона
При нажатии на любую область заблокированного диапазона или при попытке изменить её содержимое будет появляться сообщение, в котором говорится о том, что ячейка защищена от изменений. Если вы знаете пароль и осознано хотите отредактировать данные, то для снятия блокировки вам нужно будет проделать некоторые действия.
- Переходим во вкладку «Рецензирование».
- На ленте в группе инструментов «Изменения» кликаем по кнопке «Снять защиту с листа».
- Появляется окошко, в которое следует ввести ранее установленный пароль. После ввода нужно кликнуть по кнопке «OK».
После этих действий защита со всех ячеек будет снята.
Как видим, несмотря на то, что в программе Эксель не имеется интуитивно понятного инструмента для защиты конкретной ячейки, а не всего листа или книги, данную процедуру можно выполнить путем некоторых дополнительных манипуляций через изменение форматирования.
Еще статьи по данной теме:
Помогла ли Вам статья?
Довольно часто в силу разных причин перед пользователями встает задача – защитить определенные элементы таблицы Эксель от возможных изменений. Например, это могут быть ячейки с формулами, или ячейки, которые участвуют в расчетах, и их содержимое нельзя корректировать. Это особенно актуально, когда доступ к таблице имеют другие лица. Ниже мы разберемся, каким образом можно справиться с поставленной задачей.
-
Включаем защиту ячеек
- Метод 1: используем меню “Файл”
- Метод 2: применяем инструменты вкладки “Рецензирование”
- Снимаем защиту
- Заключение
Включаем защиту ячеек
К сожалению, в Excel не предусмотрена отдельная функция, которая выполняет блокировку ячеек с целью их защиты, однако, для этих целей можно воспользоваться защитой всего листа. Сделать это можно по-разному.
Для включения защиты выполняем следующие действия:
- Сначала нужно выделить все содержимое листа. Для этого щелкаем по прямоугольнику на пересечении координатных панелей. Также можно нажать комбинацию клавиш Ctrl+A (один раз, если выбрана ячейка за пределами заполненной таблицы, два раза – если выбрана ячейка внутри нее).
- Правой кнопкой мыши щелкаем по любому месту выделенной области и в раскрывшемся списке выбираем “Формат ячеек”.
- В открывшемся окне форматирования ячеек во вкладке “Защита” убираем галочку напротив опции “Защищаемая ячейка”, после чего жмем OK.
- Теперь любым удобным способом (например, с помощью зажатой левой кнопки мыши) выделяем область ячеек, которые хотим защитить от изменений. В нашем случае – это столбец с формулами. После этого щелчком правой кнопкой мыши по выделенному диапазону вызываем контекстное меню и снова выбираем пункт “Формат ячеек”.
- Перейдя во вкладку “Защита” ставим галочку напротив опции “Защищаемая ячейка” и жмем OK.
- Теперь необходимо активировать защиту листа. После этого у нас будет возможность корректировать все ячейки листа, кроме тех, которые входят в выделенный диапазон. Для этого открываем меню “Файл”.
- В правой части содержимого раздела “Сведения” нажимаем кнопку “Защитить книгу”. Откроется перечень команд, среди которых нужен вариант – “Защитить текущий лист”.
- На экране отобразятся параметры защиты листа. Напротив опции “Защитить лист и содержимое защищаемых ячеек” обязательно должна быть установлена галочка. Остальные опции ниже выбираются согласно пожеланиям пользователя (в большинстве случаев, параметры остаются нетронутыми). Для защиты листа требуется ввести пароль в специально предназначенном для этого поле (нужен будет в дальнейшем для разблокировки), после чего можно щелкнуть OK.
- В следующем небольшом окошке требуется повторить ранее введенный пароль и снова нажать кнопку OK. Это мера поможет обезопасить пользователя от собственных опечаток во время установки пароля.
- Все готово. Теперь отредактировать содержимое ячеек, для которых мы включили защиту в параметрах форматирования, не получится. Остальные элементы листа можно менять на наше усмотрение.
Метод 2: применяем инструменты вкладки “Рецензирование”
Второй метод включения защиты ячеек предполагает использование инструментов вкладки “Рецензирование”. Вот как это делается:
- Выполняем шаги 1-5, описанные в методе 1, т.е. снимаем защиту со всего листа и обратно устанавливаем только для выделенных ячеек.
- В группе инструментов “Защита” вкладки “Рецензирование” жмем кнопку “Защитить лист”.
- Появится уже знакомое окно с параметрами защиты листа. Дальше выполняем те же шаги, что и при реализации описанного выше метода.
Примечание: При сжатых размерах окна программы (по горизонтали) блок инструментов “Защита” представляет собой кнопку, нажатие которой раскроет список доступных команд.
Снимаем защиту
Если мы попытаемся внести изменения в любую из защищенных ячеек, программа выдаст соответствующе информационное сообщение.
Для снятие блокировки необходимо ввести пароль:
- Во вкладке “Рецензирование” в группе инструментов “Защита” жмем кнопку “Снять защиту с листа”.
- Откроется небольшое окошко с одним полем, в котором следует ввести пароль, указанный при блокировке ячеек. Нажав кнопку OK мы снимем защиту.
Заключение
Несмотря на то, что в Excel нет специальной функции, предназначенной для защиты определенных ячеек от редактирования, сделать это можно через включение защиты всего листа, предварительно установив требуемые параметры для выбранных ячеек.
В некоторых случаях вы можете захотеть зашифровать некоторые ячейки, чтобы предотвратить просмотр ячеек другими пользователями. Как это сделать быстро? В этой статье я расскажу о приемах быстрого шифрования и дешифрования содержимого выбранных ячеек в Excel.
Зашифровать или расшифровать выбранные ячейки с помощью VBA
Зашифровать или расшифровать выбранные ячейки с помощью Kutools for Excel
Зашифровать или расшифровать выбранные ячейки с помощью VBA
Вот код VBA, который может быстро зашифровать или расшифровать выбранные ячейки в Excel.
1. Нажмите Alt + F11 ключи для отображения Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте ниже код VBA в новый Модули окно.
VBA: зашифровать или расшифровать выбранные ячейки.
Private Function StrToPsd(ByVal Txt As String) As Long
'UpdatebyKutoolsforExcel20151225
Dim xVal As Long
Dim xCh As Long
Dim xSft1 As Long
Dim xSft2 As Long
Dim I As Integer
Dim xLen As Integer
xLen = Len(Txt)
For I = 1 To xLen
xCh = Asc(Mid$(Txt, I, 1))
xVal = xVal Xor (xCh * 2 ^ xSft1)
xVal = xVal Xor (xCh * 2 ^ xSft2)
xSft1 = (xSft1 + 7) Mod 19
xSft2 = (xSft2 + 13) Mod 23
Next I
StrToPsd = xVal
End Function
Private Function Encryption(ByVal Psd As String, ByVal InTxt As String, Optional ByVal Enc As Boolean = True) As String
Dim xOffset As Long
Dim xLen As Integer
Dim I As Integer
Dim xCh As Integer
Dim xOutTxt As String
xOffset = StrToPsd(Psd)
Rnd -1
Randomize xOffset
xLen = Len(InTxt)
For I = 1 To xLen
xCh = Asc(Mid$(InTxt, I, 1))
If xCh >= 32 And xCh <= 126 Then
xCh = xCh - 32
xOffset = Int((96) * Rnd)
If Enc Then
xCh = ((xCh + xOffset) Mod 95)
Else
xCh = ((xCh - xOffset) Mod 95)
If xCh < 0 Then xCh = xCh + 95
End If
xCh = xCh + 32
xOutTxt = xOutTxt & Chr$(xCh)
End If
Next I
Encryption = xOutTxt
End Function
Sub EncryptionRange()
Dim xRg As Range
Dim xPsd As String
Dim xTxt As String
Dim xEnc As Boolean
Dim xRet As Variant
Dim xCell As Range
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Select a range:", "Kutools for Excel", xTxt, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
If xRg Is Nothing Then Exit Sub
xPsd = InputBox("Enter password:", "Kutools for Excel")
If xPsd = "" Then
MsgBox "Password cannot be empty", , "Kutools for Excel"
Exit Sub
End If
xRet = Application.InputBox("Type 1 to encrypt cell(s);Type 2 to decrypt cell(s)", "Kutools for Excel", , , , , , 1)
If TypeName(xRet) = "Boolean" Then Exit Sub
If xRet > 0 Then
xEnc = (xRet Mod 2 = 1)
For Each xCell In xRg
If xCell.Value <> "" Then
xCell.Value = Encryption(xPsd, xCell.Value, xEnc)
End If
Next
End If
End Sub
3. Затем нажмите F5 ключ для выполнения VBA, и появится диалоговое окно для выбора ячеек для шифрования. Смотрите скриншот:
4. Затем нажмите OK и введите пароль для зашифрованных ячеек в другом всплывающем диалоговом окне. Смотрите скриншот:
5. Нажмите OK, а затем в третьем диалоговом окне введите 1 чтобы зашифровать выбранные ячейки, если вы хотите расшифровать ячейки, введите 2. Смотрите скриншот:
6. Нажмите OK, и выбранные ячейки зашифрованы. Смотрите скриншот:
Зашифровать или расшифровать выбранные ячейки с помощью Kutools for Excel
С помощью вышеуказанного метода шифрования или дешифрования ячеек немного сложно, но если у вас есть Kutools for Excel установлен, вы можете использовать Зашифровать ячейки и Расшифровать ячейки утилиты, чтобы быстро это сделать.
После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:
1. Выберите ячейки, которые нужно зашифровать, и нажмите Кутулс Плюс > Зашифровать ячейки. Смотрите скриншот:
2. Затем введите и подтвердите пароль в Зашифровать ячейки диалоговом окне и выберите один тип шифрования в Маска раздел. Смотрите скриншот:
3. Нажмите Ok or Применить, и теперь выбранные ячейки зашифрованы.
Если вам нужно расшифровать ячейки, выделите их и нажмите Кутулс Плюс > Decrypt, и введите пароль для их расшифровки. Смотрите скриншот:
Статьи, которые могут вас заинтересовать:
- Как быстро перевернуть данные в Excel?
- Как сгенерировать список всех возможных комбинаций из 4 цифр в Excel?
- Как сгенерировать случайное число без дубликатов в Excel?
- Как вставить значения в видимые / отфильтрованные ячейки только в Excel?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Защита ячеек шифром Виженера
Парольная защита листов в Microsoft Excel давно стала притчей во языцех. В том плане, что ее, по-сути, нет. С регулярностью примерно раз в месяц я получаю вопросы по почте на тему «как мне защитить мои данные на листе Excel от просмотра/изменения?» и каждый раз не знаю что ответить. Можно, конечно, дать ссылочку на статью с подробным описанием всех способов защиты ячеек и листов в Excel, но такая защита остановит только начинающего. В сети можно найти кучу платных и бесплатных программ для взлома такой защиты тупым перебором за считанные минуты.
В какой-то момент мне это надоело и я стал искать способы более надежной защиты данных в Excel собственными силами. Самым простым и удобным оказался шифр Виженера.
Принцип шифра Виженера
Одним из самых древних и простых в реализации является шифр Цезаря, который использовал его для тайной переписки. Суть его в том, что каждая буква исходного шифруемого сообщения сдвигается в алфавите на заданное количество символов. Так, например, если сдвиг равен 3, то буква А превратится в Г, буква Б — в Д и так далее:
Символы в конце алфавита (Э, Ю, Я), соответственно, будут превращаться его начало (А, Б, В).
Реализовать такой шифр просто, но стойкость его невелика — найти нужное число сдвига и дешифровать сообщение можно даже прямым перебором за 20-30 итераций, что займет даже у человека не больше часа, а у современного компьютера доли секунды. Поэтому еще в 15 веке был впервые придуман, а потом в 16 веке французским дипломатом Блезом Виженером официально представлен более совершенный метод на основе шифра Цезаря, получивший впоследствии название «шифр Виженера». Его принцип в том, что каждая буква в исходном шифруемом тексте сдвигается по алфавиту не на фиксированное, а переменное количество символов. Величина сдвига каждой буквы задается ключом (паролем) — секретным словом или фразой, которая используется для шифрования и расшифровки.
Допустим, мы хотим зашифровать фразу «КЛАД ЗАРЫТ В САДУ» используя слово ЗИМА в качестве ключа. Запишем это слово подряд несколько раз под исходной фразой:
Для удобства шифрования используем так называемый «квадрат Виженера» — таблицу, где в каждой строке алфавит сдвигается на одну позицию вправо:
Если взять строку с первой буквой ключа (З) и столбец с первой буквой исходного текста (К), то на их пересечении увидим букву «Т» — это и будет первая буква нашего зашифрованного сообщения. Затем процедура повторяется для всех остальных пар букв ключа и исходного сообщения по очереди и в результате мы получаем зашифрованный вариант нашей исходной фразы:
Заметьте, что одна и та же буква (например А) в исходном сообщений превратилась в разные буквы на выходе (Н, Й и Б), т.к. сдвиг при шифровании для них был разный. Именно поэтому вскрыть шифр Виженера простыми способами невозможно — вплоть до 19 века он считался невзламываемым и успешно использовался военными, дипломатами и шпионами многих стран, частности — конфедератами во время Гражданской войны в США.
Реализация формулами по квадрату Виженера
Если использовать готовый квадрат Виженера как в примере выше, то реализовать шифрование можно одной формулой с помощью функций ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH), как это было описано в статье про двумерный поиск в таблице. Выглядеть это может примерно так:
Логика этой формулы следующая:
- Первая функция ПОИСКПОЗ (подсвечена зеленым) ищет первую букву ключа (З) в зеленом столбце (B9:B40) и выдает порядковый номер ячейки, где она ее нашла, т.е. номер строки в квадрате Виженера по которому идет шифрование.
- Вторая функция ПОИСКПОЗ (подсвечена розовым) аналогичным образом ищет первую букву исходного сообщения (К) в красной строке и выдает порядковый номер столбца.
- Функция ИНДЕКС выдает содержимое ячейки из квадрата (C9:AH40) с пересечения строки и столбца с найденными номерами.
Реализация формулами по кодам символов
Легко сообразить, что в реальной жизни в документах могут использоваться не только буквы русского языка, но и латиница, цифры, знаки препинания и т.д. Делать квадрат Виженера с участием всех этих символов — та еще эпопея, но есть другой, гораздо более простой способ.
Внутри компьютера и операционной системы каждый символ имеет свой числовой код от 0 до 255 (его еще называют ASCII-кодом). Microsoft Excel имеет в своем стандартном наборе две функции, которые умеют с ними работать:
- Функция КОДСИМВ (CODE) — выдает числовой код символа, указанного в качестве аргумента. Например КОДСИМВ(«Ж») выдаст 198.
- Функция СИМВОЛ (CHAR) — выдает символ, соответствующий указанному в аргументе коду, т.е. наоборот СИМВОЛ(198) даст нам букву Ж.
Для применения шифра Виженера запишем наш исходный текст и ключ друг под другом как раньше и выведем коды каждой буквы с помощью функции КОДСИМВ:
Теперь сложим коды символов ключа и исходного текста, добавив функцию ОСТАТ (MOD), чтобы при превышении максимально допустимого количества символов (256) остаться в пределах 0-255:
Теперь осталось использовать функцию СИМВОЛ, чтобы вывести символы по полученным кодам и сформировать зашифрованное сообщение:
Само-собой, можно было бы обойтись и без дополнительных строк, уложив все функции в одну формулу для компактности:
Расшифровка производится совершенно аналогично, только знак «плюс» в формуле меняется на «минус»:
Для шпионских игр шифрование такими спецсимволами, конечно, не очень удобно — так и представляю себе глаза радистки Кэт при попытке передать третий и пятый символы нашей шифровки Но нам их, отстреливаясь из именного ТТ во время погони, на бумажке не писать, так что для наших целей — сойдет.
Макросы для шифрования-дешифрования
Ну, а теперь самое интересное. Чтобы применить шифр Виженера в реальной жизни лучше будет воспользоваться простым макросом, который проводит все описанные в предыдущем пункте операции с каждой ячейкой текущего листа автоматически. Откройте редактор 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). Выглядеть все это может примерно так:
Важные нюансы
- ВНИМАНИЕ! Если вы внимательно прочитали статью, то должны четко понимать — не существует легкого способа узнать или подобрать ключ! Есть несколько методик взлома шифра Виженера, но все они весьма сложны для неспециалиста и не дают 100% гарантии. Если вы забудете ключ — потеряете данные навсегда с большой вероятностью. Если что — я вас предупредил.
- При шифровании не нарушаются формулы, ссылки и форматирование — после дешифрации все отлично работает.
- Если при дешифрации вы неправильно введете ключ, то получите бессмысленную «кашу» из спецсимволов вместо своего текста (т.к. сдвиг кодов будет неправильным). Тогда придется откатиться на шаг назад повторным шифрованием с тем же паролем и потом снова попробовать расшифровать документ еще раз (на этот раз используя правильный ключ).
Ссылки по теме
- 4 способа защиты данных в Microsoft Excel
- Суперскрытый лист в книге Excel
- Выборочное отображение листов книги пользователям по паролю