четверг, 10 октября 2013 г.

Генерация случайного пароля

Каждую из приведенных ниже команд вы можете либо модифицировать, чтобы получить пароль желаемой длины, либо можете просто использовать первые х символов вывода, если не хотите использовать очень длинный пароль.
  1. В этом методе используется SHA для того, чтобы получить из текущей даты хеш-функцию, которая фильтруется с помощью base64 и затем отображаются первые 32 символа.
    date +%s | sha256sum | base64 | head -c 32 ; echo
  2. Этот метод использует встроенную функцию /dev/urandom, вывод которой фильтруется, чтобы оставить только символы, допустимые в паролях. Затем в выоде оставляются только первые 32 символа.
    < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;
  3. В этом случае используется случайная функция из openssl, если этот пакет установлен в вашей системе.
    openssl rand -base64 32
  4. Этот вариант подобен предыдущему с urandom, но команды используются в обратном порядке. Bash - очень мощная вещь!
    tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1
  5. Еще один пример, в котором для фильтрации используется команда strings, которая предназначена для вывода пригодных для печати строк файла, но в этом случае обрабатывает вывод urandom.
    strings /dev/urandom | grep -o ':alnum:' | head -n 30 | tr -d '\n'; echo
  6. А вот еще более простой вариант использования urandom.
    < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6
  7. В этом варианте используется очень полезная команда dd.
    dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
  8. Вы можете даже создать случайный пароль, который можно набирать одной только левой рукой.
    < /dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8; echo ""
  9. Если создавать пароли вам приходится часто, будет неплохой идеей написать для этого функцию. После этого вы сможете использовать randpw в любое время, как только вам потребуется создать новый пароль. Лучше всего поместить ее в ваш файл ~/.bashrc.
    randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;}
    Тот же самый прием вы можете использовать с любым из приведенных выше примеров, достаточно заменить содержимое фигурных скобок { }.
  10. И, наконец, самый простой способ сгенерить пароль в командной строке. Этот способ работает в Linux, Windows с Cygwin и,вероятно, в Mac OS X. Я уверен, что некоторые люди скажут, что этот способ дает не такой случайный результат, как некоторые из предыдущих вариантов, но, честное слово, он вполне удовлетворительно работает.
    date | md5sum
    Да, и этот вариант достаточно легко запоминается.
Есть и другие способы генерации случайного пароля в командной строке Linux, например, команда mkpasswd, которая предназначена для задания пароля к пользовательскому экаунту в Linux.

FROM