Генератор паролей 1с

Сидел себе тихо программировал, никого не трогал, как вдруг прилетает задача: “Срочно в одной из базы отменить автоматическую аутентификацию пользователей и организовать вход пользователей только по паролям”! Срок: вчера.
С виду ничего серьезного и делается все довольно быстро. Но встал неожиданно вопрос: Чем сгенерировать пароли для пользователей? В интернете полно онлайн решений, но захотелось чего-то своего.
На всем известном сайте “инфостарт” нашлось пару решений, в которых через генератор случайных чисел и таблицу символов ASCII формировались пароли заданной длинны.

Пример самой элементарной процедуры формирования пароля:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
&НаКлиенте Процедура СформироватьПароль() Пароль = ""; ДлинаПароля = 5; ГСЧ = Новый ГенераторСлучайныхЧисел(); Пока СтрДлина(Пароль) < ДлинаПароля Цикл НекийСимвол = Символ(ГСЧ.СлучайноеЧисло(33, 90)); Пароль = Пароль + Нрег(НекийСимвол); КонецЦикла; КонецПроцедуры |
В результате, успешно справившись с одной из самых сложных задач на текущем месте работы, я задумался о том, что бы немного расширить функционал формирования паролей для пользователей.
Пару часов рабочего времени и вот шедевр:

Данная обработка умеет формировать пароли различной длинны с нужным наборов символов и по разным шаблонам. Не забываем, что пароли в 1с не чувствительны к регистру – ему все равно большие или маленькие буквы вы используете.
Описание функционала:
- Длина пароля – указываем необходимую длину пароля (в см.);
- Использовать цифры – включает в пароль минимум 1с цифру;
- Исключить специальные символы – исключает из пароля неудобные для вас символы (указываются в модуле формы обработки).
Указав эти основные параметры формируем пароль. Если этого вам недостаточно то можно воспользоваться двумя шаблонами:
- В формате номера машины – будет сгенерирован пароль в формате автомобильного номера xx000xx00;
- Английское слово – в качестве пароля будет установлено одно из коротких английских слов (1999 вариантов).
Ниже приведен пример процедуры для формирования пароля в формате регистрационного номера транспортного средства:
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 |
&НаКлиенте Процедура СформироватьПарольВФорматеНомераМашины() ГСЧ = Новый ГенераторСлучайныхЧисел(); Пароль = ""; ДоступныеБуквы = "ABEKMHOPCTYX"; Счетчик = 1; Пока СтрДлина(Пароль) < 8 Цикл ЧастьПароля = ""; Если Счетчик = 1 Или Счетчик = 5 Или Счетчик = 6 тогда ЧастьПароля = НРег(Сред(ДоступныеБуквы, ГСЧ.СлучайноеЧисло(1, 12), 1)); //наши буквы ИначеЕсли Счетчик = 2 Или Счетчик = 3 Или Счетчик = 4 Или Счетчик = 7 Или Счетчик = 8 Тогда ЧастьПароля = Символ(ГСЧ.СлучайноеЧисло(48, 57)); //наши цифры КонецЕсли; Пароль = Пароль + ЧастьПароля; Счетчик = Счетчик + 1; КонецЦикла; КонецПроцедуры |
Подбор английских слов реализован через макет:
Обработку можно скачать по ссылке: ОбработкаГенерацииПаролей
Никаких лицензионных прав — используйте механизм в любых целях: Генерите пароли, изменяйте функционал и т.д.!
вау! инфа сотка.