Заметки о Windows и других программных продуктах Microsoft...

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

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

За все мое долгое знакомство с Microsoft Excel  я видел множество примеров его использования не по прямому назначению. Его использовали и как калькулятор, и как текстовый редактор, как среду разработки и базу данных и даже как программу для расчета зарплаты. И вот сегодня я расскажу о еще одном нестандартном применении Excel, а именно — о том, как сделать из него генератор паролей.

Сгенерировать пароль в Excel можно двумя способами. Способ первый:

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

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

• СИМВОЛ (CHAR в англ. варианте) — возвращает символ с заданным кодом. Например =СИМВОЛ(65) возвратит латинскую A в верхнем регистре;
• СЛУЧМЕЖДУ (RANDBETWEEN в англ. варианте)  — возвращает случайное целое число, находящееся в диапазоне между двумя заданными числами. Например =СЛУЧМЕЖДУ(1;100) вернет произвольное число между между 1 и 100.

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

Для получения произвольной цифры между 0 и 9 надо ввести в ячейке функцию:

=СЛУЧМЕЖДУ(0;9)

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

генерация произвольной цифры между 0-9

 

Можно расширить диапазон, например от 0 до 99:

=СЛУЧМЕЖДУ(0;99)

генерация произвольной цифры между 0-99

 

Чтобы длина пароля была неизменной, можно указать диапазон от 10 до 99:

=СЛУЧМЕЖДУ(10;99)

генерация произвольной цифры между 10-99

 

Ну и так насколько хватит фантазии, например:

=СЛУЧМЕЖДУ(1000;9999)

генерация произвольной цифры между 1000-9999

 

Переходим к буквам. Следующая функция вернет нам произвольную заглавную букву от A до Z:

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

генерация произвольного символа от A-Z

 

А так мы получим строчные буквы от a до z:

=СИМВОЛ(СЛУЧМЕЖДУ(97;122))

генерация произвольного символа от a-z

 

Использовать кириллицу в паролях я настоятельно не рекомендую, но если очень хочется, то вот функция для заглавных А-Я:

=СИМВОЛ(СЛУЧМЕЖДУ(192;223))

генерация произвольного символа от А-Я

 

и для строчных а-я:

=СИМВОЛ(СЛУЧМЕЖДУ(224;255))

генерация произвольного символа от а-я

 

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

=СИМВОЛ(СЛУЧМЕЖДУ(33;47))

генерация произвольного спецсимвола 1

 

и такой функциями:

=СИМВОЛ(СЛУЧМЕЖДУ(91;96))

генерация произвольного спецсимвола 2

 

Ну и теперь остается собрать все эти функции в единое целое и получить пароль. Для этого наберем нужный набор функций и объединим их с помощью амперсанда (&). Для получения пароля из 8 символов, включая буквы в разном регистре, цифры и спецсимволы, используем вот такую функцию:

=(СЛУЧМЕЖДУ(0;9)&СИМВОЛ(СЛУЧМЕЖДУ(65;90))&СИМВОЛ(СЛУЧМЕЖДУ(97;122))&СИМВОЛ(СЛУЧМЕЖДУ(33;47))
&(СЛУЧМЕЖДУ(0;9))&СИМВОЛ(СЛУЧМЕЖДУ(91;96))&СИМВОЛ(СЛУЧМЕЖДУ(65;90))&СИМВОЛ(СЛУЧМЕЖДУ(97;122)))

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

 

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

Генерация паролей с помощью VBA

Жмем ALT + F11 для открытия Microsoft Visual Basic for applications. Затем в меню выбираем Insert — Module, и в открывшееся окно вставляем следующий код:

Function ПАРОЛЬ (Optional ДЛИНА As Integer = 8, Optional СИМВ As Boolean = False) As String
Dim i As Integer
Dim simb As String * 1
Dim arrsimb As Integer
Dim pass As String
Randomize
If СИМВ = False Then
For i = 1 To ДЛИНА
arrsimb = Int(Rnd * 3)
Select Case arrsimb
Case 0
simb = Int(Rnd * 9)
Case 1
simb = Chr(Int((90 - 65 + 1) * Rnd + 65))
Case 2
simb = Chr(Int((122 - 97 + 1) * Rnd + 97))
End Select
pass = pass & simb
Next
Else
For i = 1 To ДЛИНА
simb = Chr(Int((126 - 33 + 1) * Rnd + 33))
pass = pass & simb
Next
End If
ПАРОЛЬ = pass
End Function

 

код для генерации пароля на VBA

 

Сохраняем код и закрываем редактор. Теперь мы имеем собственную функцию с двумя необязательными аргументами — длина пароля (по умолчанию 8 символов) и использование спецсимволов (по умолчанию отключено). Для ее использования с дефолтными параметрами просто вводим в ячейке:

=ПАРОЛЬ()

генерация пароля с дефолтными настройками

 

Если хотим изменить длину пароля, например до 14 символов, то добавляем параметр:

=ПАРОЛЬ(14)

генерация пароля с указанной длиной

 

Ну и включаем использование спецсимволов:

=ПАРОЛЬ(14;1)

генерация пароля с указанной длиной и спецсимволами

 

Таким образом можно генерировать любое количество произвольных паролей любой длины и сложности.

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

 
 
Комментарии

Пока нет комментариев.

Ответить