Конечно, первым делом на ум приходит возможность сделать хэш по какой-то случайной уникальной величине. К примеру так:
date | md5sum
После чего можно будет добавить в строку пару символов типа ! @ № %
и получится отличный пароль. Но что если надо сделать очень длинный и запутанный пароль, к примеру, на 100 символов?В таком случае лучше воспользоваться генератором случайных данных, отфильтровать полученные от него данные и обрезать до нужной длины:
</dev/urandom tr -dc '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ(){}_!@#$%^*=+-;:?&<>/.,|' | head -c 100
Эта команда выведет 100 случайных символов их заданного набора. Результат будет примерно таким (показаны только первые 20 символов из 100):
7M=5?b8Gk5PB^aA?X6z7...
<hc={|06K5_n(RXAZ8KY...
hN-=TZ+!4mwe-*fSNWgw...
1B<LffxL>x}v!d*lDtDS...
SFBAy02C=rW-Bwq^IUe{...
Эти строки вполне можно назвать качественными паролями. Рассмотрим по порядку каждую составляющую выполненной bash команды.В самом начале команды стоит обращение к генератору случайных данных
</dev/urandom
.Вывод генератора направляется на команду "tr" которая удаляет символы, которые не попадают в список перечисленных, благодаря одновременной работе ключей "d" и "c" ("d" - удаляет символы, которые входят в выборку, а "c" инвертирует, чтобы удалять те, которые НЕ входят)
Вертикальная черта до команды head - это команда конвейера. Она передаёт вывод из одной команды в другую.
Команда head обрезает строку до нужно длины, которая задаётся в количестве символов после ключа "c". В нашем случае это 100.
Приведённую ранее команду для генерации пароля можно укоротить, если использовать регулярное выражение вместо цифр и букв. Получится так:
</dev/urandom tr -dc 0-9-a-z-A-Z'(){}_!@#$%^*=+-;:?&<>/.,|' | head -c 100
В обычном компьютере или сервере нет настоящего генератора случайных чисел. Только псевдослучайных. Поэтому к выводу генератора паролей всегда стоит добавить от себя пару символов, чтобы набор был более случайными.