Excel Training

Эффективная работа в Excel, обучение, финансовое моделирование и решение прикладных экономических задач

Генератор паролей в Excel

Сегодня мы создаем генератор паролей в Excel.

Зачем нам это нужно?

Генератор паролей нужен для быстрого создания устойчивых паролей заданной длины.

Конечно, можно придумать пароль и самому, и даже длинный и даже сложный, но наша задача, сделать это в Excel. Это хороший комплексный практический пример, в ходе работы над которым, мы задействуем функции: СЛУЧМЕЖДУ, ИНДЕКС, СЦЕПИТЬ, СИМВОЛ и логическую функцию ЕСЛИ. Так же мы используем элементы управления «Флажок» и «Переключатель».

В основе нашей разработки будет лежать генератор случайных чисел, представленный в Excel функцией =СЛЧИС(), и в частности его разновидность — функция =СЛУЧМЕЖДУ(нижн_граница; верхн_граница), которая возвращает случайное число между двумя заданными. Соответственно нижней и верхней границей числового диапазона.

В дополнение к этой функции можно использовать функцию =СИМВОЛ(число), которая возвращает знак в соответствии с заданным кодом (от 1 до 255) используя таблицу знаков (ANSI).

Например, чтобы сгенерировать случайным образом латинские заглавные буквы, достаточно применить формулу:

=СИМВОЛ(СЛУЧМЕЖДУ(65;90))

Где 65 и 90 соответственно нижняя и верхняя граница диапазона чисел кода, которому соответствуют заглавные латинские буквы A-Z по таблице знаков ANSI.

Для того чтобы получить шестизначный пароль из заглавных латинских букв необходимо использовать функцию =СЦЕПИТЬ(текст1; текст2;…), которая объединяет несколько текстовых строк в одну. В нашем случае это будет выглядеть так:

=СЦЕПИТЬ(СИМВОЛ(СЛУЧМЕЖДУ(65;90));СИМВОЛ(СЛУЧМЕЖДУ(65;90));СИМВОЛ(СЛУЧМЕЖДУ(65;90));СИМВОЛ(СЛУЧМЕЖДУ(65;90));СИМВОЛ(СЛУЧМЕЖДУ(65;90));СИМВОЛ(СЛУЧМЕЖДУ(65;90)))

Нажимая клавишу F9, генерируем пароли вида: MFVYZW, YHCLSD, BNLXEW и т.д.

Однако этот простой способ имеет ряд недостатков. Например, набор необходимых нам символов для пароля в таблице знаков может располагаться в несмежных, диапазонах. Так цифры от 0 до 9 имеют код 48 до 57, строчные латинские буквы – код с 97 до 122.  Если мы захотим составить пароль из цифр, и латинских букв с разным регистром или захотим исключить сходные по написанию буквы (например, строчную l и заглавную I) то столкнёмся с определенными трудностями в использовании приведенного выше метода.

Методом свободным от указанных недостатков будет создание собственной таблицы символов.

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

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

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

В файле примера данная таблица располагается в диапазоне А1:А86, при чем цифры от 0 до 9 занимают диапазон А1:А10, латинские строчные буквы – диапазон А11:А35, латинские заглавные буквы – диапазон А36:А60, набор спецсимволов – диапазон А61:А86. Строчная l и заглавная I исключены.

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

Так же, мы добавим возможность выбора длины пароля – 6, 8, 10, 12 символов.

Для удобства, присвоим нашей таблице символов находящейся в диапазоне А1:А86 имя «таблица_символов».

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

=ИНДЕКС(таблица_символов;СЛУЧМЕЖДУ(1;35);1)

Для генерации случайного знака из набора цифр, строчных и заглавных латинских букв:

=ИНДЕКС(таблица_символов;СЛУЧМЕЖДУ(1;60);1)

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

=ИНДЕКС(таблица_символов;СЛУЧМЕЖДУ(1;86);1)

Эта формула возвращает символ, находящийся в выбранной случайным образом строке нашего массива состоящего из 1 столбца и 86 строк.

Теперь добавим механизм выбора сложности пароля. Для этого мы будем использовать элемент управления «Флажок», который в установленном положении принимает значение ИСТИНА.

Добавим в нашу форму два флажка, для двух дополнительных уровней сложности пароля. Установка первого флажка будет добавлять учет регистра (добавлять заглавные латинские буквы), установка второго флажка будет добавлять учет регистра и спецсимволов.

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

Установим связь первого флажка с ячейкой Е7, а связь второго флажка – с ячейкой Е8.

Установить связь можно щелкнув правой кнопкой мыши на элементе управления и, в появившемся контекстном меню выбрать пункт Формат объекта → вкладка Элемент управления→ поле Связь с ячейкой.

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

=ИНДЕКС(таблица_символов;ЕСЛИ($E$8=ИСТИНА;СЛУЧМЕЖДУ(1;86);ЕСЛИ($E$7=ИСТИНА;СЛУЧМЕЖДУ(1;60);СЛУЧМЕЖДУ(1;35)));1)

Это генерация только одного знака, а мы задались целью сделать 4 варианта – 6, 8, 10, и 12 символов.

Для того, чтобы не повторять эту формулу 36 раз в одной ячейке (длина пароля в нашем примере 6, 8, 10, 12 символов, соответственно все варианты 6+8+10+12=36), введем ее в 12 разных ячеек, которые потом будем сцеплять. У нас это будет диапазон В1:М1.

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

Для управления длиной пароля, мы будем использовать элемент управления «Переключатель», который в отличие от «Флажка» может принимать только одно из возможных значений среди таких же элементов управления. Флажок может быть, как снят, так и установлен.

Добавим в нашу форму четыре переключателя, соответствующие длине пароля в 6, 8, 10 или 12 символов, и установим связь этих переключателей с ячейкой Е10.

Тогда в итоговой ячейки вывода пароля будет следующая формула:

=ЕСЛИ($E$10=1;СЦЕПИТЬ(B1;C1;D1;E1;F1;G1);ЕСЛИ($E$10=2;СЦЕПИТЬ(B1;C1;D1;E1;F1;G1;H1;I1);ЕСЛИ($E$10=3;СЦЕПИТЬ(B1;C1;D1;E1;F1;G1;H1;I1;J1;K1);СЦЕПИТЬ(B1;C1;D1;E1;F1;G1;H1;I1;J1;K1;L1;M1))))

Далее выполняем некоторые организационные мероприятия для защиты листа и придания ему надлежащего вида. С этой целью, мы устанавливаем защиту ячеек на всем листе, кроме ячеек Е7, Е8 и Е10 (там где меняются параметры, связанные с установкой флажков и переключателей). Все наши вспомогательные данные на листе красим в белый цвет (теперь у нас не видно ни нашу таблицу символов, ни поля генерации знаков пароля), убираем линии сетки на вкладке Вид и устанавливаем защиту листа.

Скрыть данные на листе можно, также, другим способом. Формат ячеек, вкладка Число, выбираем Все форматы, справа а поле Тип ставим три знака точки с запятой «;;;» и нажимаем ОК.

passgen

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

Скачать

Comments are currently closed.