|
Генератор восьмизначного пароля.
Рассмотрена генерация пароля с использованием операторов ^mid и ^random и массива символов.
Макрос engine выдергиват по одному символу (^mid) из переданного ему в качестве параметра множества ($chars).
Номер символа (^length) который нужно достать из множества вычисляется случайным образом (^random).
После символ добавляется в переменную passwd
@engine[chars] ^var[passwd;.;^mid[$chars;^random[^length[$chars]];1]] @endВ зависимости от параметра макроса generate, движком (^macro[engine]) будут обработаны те или иные символы (гласные/согласные/цифры)
Если макрос будет вызван без параметров, то допустимыми будут символы из DEFAULT.
@generate[type] определяются допустимые символы ^switch[$type; ^case[vowels;^macro[engine;aeiouy]] ^case[consonants;^macro[engine;bcdfghklmnprstvxz]] ^case[digits;^macro[engine;1234567890]] ^case[DEFAULT;^macro[engine;qwertyuiopasdfghjklzxcvbnm1234567890]] ] @endВ макросе main генерируем пароль состоящий из пяти букв и трех цифр.
@main ^for[i;1;5; ^rem[ Проверяем на чет/нечет ] ^rsplit[^eval[^var[i]/2;%f];.] ^rem[ Проверка на четность/нечетность текущий итерации: Если остаток от деления (номер итерации делим на 2) больше нуля, значит число нечетное. Чередуем гласные и согласные (четная/нечетная итерация) для лучшей запоминаемости пароля. ] ^if[^item[0]>0; ^macro[generate;consonants] ; ^macro[generate;vowels] ] ] ^rem[ Добавляем в конец уже готового пароля из 5 букв еще 3 цифры ] ^for[i;1;3; ^macro[generate;digits] ] ^var[passwd] @endРезультат работы макроса: zopix414
|