Как сделать генератор паролей в 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 (там где меняются параметры, связанные с установкой флажков и переключателей). Все наши вспомогательные данные на листе красим в белый цвет (теперь у нас не видно ни нашу таблицу символов, ни поля генерации знаков пароля), убираем линии сетки на вкладке Вид и устанавливаем защиту листа.
Скрыть данные на листе можно, также, другим способом. Формат ячеек, вкладка Число, выбираем Все форматы, справа а поле Тип ставим три знака точки с запятой «;;;» и нажимаем ОК.
В учебном примере на защиту листа пароля нет, и чтобы посмотреть устройство файла нужно просто снять защиту листа на вкладке Рецензирование.
Скачать
Иногда в работе некоторых специалистов (IT-администраторов, инженеров и др.) возникает ситуация, когда нужно быстро создать много паролей для новых пользователей, т.е. сгенерировать случайные наборы символов.
Сделать это в Excel можно при помощи пары простых функций:
- функция СЛУЧМЕЖДУ (RANDBETWEEN) – генерирует случайное число в заданном диапазоне;
- функция СИМВОЛ (CHAR) – выводит символ с заданным кодом.
По внутренней компьютерной кодировке английские прописные буквы имеют коды символов с 65 по 90, строчные – с 97 по 122. Поэтому, например, формула =СИМВОЛ(СЛУЧМЕЖДУ(65;90))
будет выводить случайную прописную букву английского алфавита. Соответственно, если нам нужна строка из таких символов, то необходимо использовать несколько таких функций, склеенных с помощью символа &.
В английском варианте это будет =CHAR(RANDBETWEEN(65;90))
.
Если же необходимо создавать более сложные пароли (с символами разного регистра, цифрами и др.), то проще будет использовать специальную макрофункцию. Откройте редактор Visual Basic сочетанием клавиш Alt+F11, вставьте новый модуль (меню Insert → Module) и введите туда ее текст.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Public Function GeneratePassword(Optional Lenght As Integer = 8) For s = 1 To Lenght choice = Int(Rnd * 3) If choice = 0 Then nextsymbol = Int(Rnd * 9) End If If choice = 1 Then nextsymbol = Chr(Int((90 - 65 + 1) * Rnd + 65)) End If If choice = 2 Then nextsymbol = Chr(Int((122 - 97 + 1) * Rnd + 97)) End If PassTxt = PassTxt & nextsymbol Next s GeneratePassword = PassTxt End Function |
Public Function GeneratePassword(Optional Lenght As Integer = 8) For s = 1 To Lenght choice = Int(Rnd * 3) If choice = 0 Then nextsymbol = Int(Rnd * 9) End If If choice = 1 Then nextsymbol = Chr(Int((90 — 65 + 1) * Rnd + 65)) End If If choice = 2 Then nextsymbol = Chr(Int((122 — 97 + 1) * Rnd + 97)) End If PassTxt = PassTxt & nextsymbol Next s GeneratePassword = PassTxt End Function
Теперь ее можно использовать на любом листе текущей книги для генерации сложных паролей заданной длины.
Привет!
Наверняка те, кто давно пользуется интернетом, имеют свои излюбленные сервисы для генерации паролей. Но всегда ли есть смысл таковым доверять?
С одной стороны, большинство владельцев подобных сервисов желает предоставить быстрый вариант получить ворох паролей без излишней головной боли. Да что там, у меня тоже подобный есть. В отличие от некоторых, мой работает исключительно на JavaScript. Это значит, что вы можете открыть ссылку в приватной вкладке, отключить интернет, сгенерировать необходимое число паролей, сохранить их, после чего закрыть вкладку и включить интернет. 99+% гарантии, что созданные пароли будут только вашими, за исключением случая, когда в системе уже сидит какой-то зловред и собирает данные.
С другой стороны, витает теория заговора. Когда пароли формирует сервер, теоретически, может предоставляться ограниченное число заранее сгенерированных паролей, чтобы потом осуществить возможность перебора по словарю.
Если всякие формулы не интересны, прокачивать свой скилл не видите смысла, и вообще, с Экселем работаете постольку-поскольку, можете сразу скачать готовый файлик. И после этого будете твёрдо уверены, что полученные пароли только ваши.
А что делать, если нет доверия к сайтам вообще, и при этом нет желания разбираться, почему пароль, сгенерированный на JavaScript в приватной вкладке при отключенном интернете, не может быть отослан владельцу сервиса? Для людей с такой фобией могу предложить вариант с Excel-файлом.
Ключевая особенность этого генератора, назовём его так — Вы сами задаёте символы, которые будут использоваться в пароле.
Для начала, откроем Excel и создадим новый файл. В первом столбце пишем используемые символы, по одному в ячейке:
a
b
c
и т. д.
Далее, чтобы несколько облегчить работу с файлом и не заставлять вводить число символов, создадим пару ячеек для внутреннего использования.
В ячейке D1 осуществляется поиск конца данных (используемых символов). Для этого пишем такую формулу:
=ПОИСКПОЗ("";A1:A256;-1)
Думаю, 256 символов более, чем достаточно.
Теперь генерируем ссылку на диапазон всех символов пароля. В D2 пишем такую конструкцию:
="$A$1:$A$"&D1
Символ амперсанда — & — используется для сцепки строковых значений. Первое значение задаём явно, а второе — это содержимое ячейки D1.
Теперь приступим непосредственно к получению случайных символов из диапазона. Сами пароли будут формироваться в столбце B.
Сперва инициализируем ячейку B1 с помощью формулы:
=ИНДЕКС(ДВССЫЛ($D$2);СЛУЧМЕЖДУ(1;$D$1);1)
Разберём каждую из трёх функций:
- ДВССЫЛ(ячейка) — возвращает ссылку на диапазон, заданный в ячейке. Зачем это нужно — ниже.
- СЛУЧМЕЖДУ(от;до) — возвращает случайное число в диапазоне от (в нашем случае 1, т. к. символы пароля находятся в столце A, начиная со строки ) и до (значение из ячейки D1, в которой нашли окончание данных).
- ИНДЕКС(массив;строка;столбец) — возвращает значение ячейки из элемента массив (диапазон из ячейки D2, см. 1), находящееся на пересечение строки (случайное значение, см. 2) и столбца (всегда 1, т. к. символы пароля расположены в одном столбце).
Результатом работы этой конструкции будет один символ из столбца A.
Ячейка B2 будет использовать содержимое B1 плюс один случайный символ:
=B1&ИНДЕКС(ДВССЫЛ($D$2);СЛУЧМЕЖДУ(1;$D$1);1)
Здесь видим уже знакомую сцепку строк: содержимое B1 и новый случайный символ.
Теперь растягиваем формулу из ячейки B2 вниз, на сколько нужно.
Забавно, что программная нумерация строк показывает и длину пароля в соответствующей ячейке столбца B. Нужен пароль длиной 16 символов? Щёлкаем мышкой на B16 и копируем пароль в буфер (Ctrl-C).
Нужно обновить пароли — щёлкаем на любой ячейке и нажимаем клавишу F2 (режим редактирования ячейки), затем .
P. S. Статья скорее является примером работы с Экселем, нежели действительно необходимой программой. Хотя, кто знает, может кто-то решит использовать файл по прямому назначению, для создания паролей.
P. P. S. Если возникли вопросы по используемым формулам, задавайте в комментариях. Постараюсь помочь.
Автор публикации
1 892
не в сети 13 часов
x64 (aka andi) Комментарии: 2752Публикации: 385Регистрация: 02-04-2009
(
голосов, в среднем:
из 5)
Для создания большого количества цифровых, буквенных либо смешанных значений, таких, например, как логины и пароли существует несколько подходов, отличающихся друг от друга удобством, простотой использования и способностью влиять на конечный результат.
Онлайн-сервисы для генерации паролей
Существует множество сервисов, которые позволяют формировать безопасные, надежные пароли в режиме онлайн. Одни позволяют сгенерировать один пароль, другие генерируют сразу по десять, третьи позволяют пользователю задавать количество создаваемых паролей. Как правило, все сервисы дают возможность выбора длины пароля и групп символов из которых этот пароль будет состоять. Многие сервисы позволяют разделять прописные и строчные буквы, русские и латинские, а также подставлять в пароль специальные знаки и исключать повторяющиеся символы.
Генерация паролей в Excel при помощи формул
Используя стандартные функции Excel, такие, как СЛЧИС, СЛУЧМЕЖДУ, СИМВОЛ, ЦЕЛОЕ и другие, можно создать функции для генерации паролей разной степени сложности. В сети встречаются различные способы реализации решения этой задачи. Для создания пароля из 6 символов, состоящего из латинских букв, цифр и знаков можно использовать, например, формулу:
=СЦЕПИТЬ(СИМВОЛ(СЛУЧМЕЖДУ(33;126)); СИМВОЛ(СЛУЧМЕЖДУ(33;126)); СИМВОЛ(СЛУЧМЕЖДУ(33;126)); СИМВОЛ(СЛУЧМЕЖДУ(33;126)); СИМВОЛ(СЛУЧМЕЖДУ(33;126)); СИМВОЛ(СЛУЧМЕЖДУ(33;126)))
Функция VBA для генерации простых паролей
Function GetPassword(lenght As Integer) As String Dim i As Integer Dim simbol As String Dim password As String Randomize For i = 1 To lenght simbol = Chr(Int((126 - 33 + 1) * Rnd + 33)) password = password & simbol Next GetPassword = password End Function
Генератор паролей заданной сложности
Надстройка для Excel – это программа, написанная на встроенном в приложения Office языке программирования VBA. Надстройка устанавливается в Excel, расширяет его возможности и позволяет генерировать любое количество паролей, логинов, кодов и любых других буквенно-цифровых значений заданной длины и любой сложности.
надстройка для генерации паролей разной сложности
Надстройка дает возможность быстро заполнить ячейки выделенного диапазона случайными значениями, гибко настроить сложность этих значений, установить нужную длину и выбрать группы символов, из которых значения будут состоять (цифры, специальные символы, строчные буквы латиницы, строчные буквы кириллицы, заглавные буквы латиницы и заглавные буквы кириллицы). Количество символов ограничено максимально возможной длиной значения ячейки, количество значений соответствует количеству ячеек выделенного диапазона.