Как сгенерировать случайную строку?

209

Я хотел бы создать случайную строку (например, пароли, имена пользователей и т. Д.). Должна быть возможность указать необходимую длину (например, 13 символов).

Какие инструменты я могу использовать?

(Из соображений безопасности и конфиденциальности желательно, чтобы строки генерировались в автономном режиме, а не в Интернете на веб-сайте.)

landroni
источник
1
Уже есть хорошие ответы на AskUbuntu . (Я использую apgлично.)
Sparhawk
1
@Sparhawk Вопрос / ответы AskUbuntu больше об инструментах перечисления. Пожалуйста, рассмотрите возможность добавления ответа, показывающего, как использовать apgдля генерации случайной строки.
Landroni
1
Будьте осторожны при использовании генерации случайных чисел на компьютерах. Некоторые из них гораздо менее случайны, чем кажутся, но определить разницу между «хорошим» и «плохим» генерацией случайных чисел довольно сложно.
Sobrique
@Sobrique Отличное замечание о генераторах псевдослучайных чисел (например /dev/urandom). Было бы неплохо получить ответы на некоторые вопросы, используя настоящие генераторы случайных чисел, например, на random.org .
Ландрони
25
Ответ на шутку: чтобы сгенерировать действительно случайную строку, поместите нового пользователя перед Emacs (или Vim) и попросите его выйти. ;)
Wildcard

Ответы:

187

Мой любимый способ сделать это, используя /dev/urandomвместе с, trчтобы удалить нежелательных символов. Например, чтобы получить только цифры и буквы:

head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; echo ''

Также можно добавить больше символов из списка специальных символов пароля OWASP :

</dev/urandom tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' | head -c 13  ; echo

Если у вас есть проблемы с trжалобами на ввод, попробуйте добавитьLC_ALL=C вот так:

LC_ALL=C tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 13 ; echo
Герберт
источник
15
Или сделайте так: head /dev/urandom | tr -dc A-Za-z0-9 | head -c10- Этот способ более точен. Вы получаете 10 символов, которые являются прописными, нижними или цифрами
Брэндин
8
Первая headкоманда может быть проблематичной. Он выведет первые 10 строк /dev/urandom, что означает, что он остановится, как только увидит 10-ую новую строку. Таким образом, длина вывода, отправляемого trкоманде, случайна. Возможно, что в выходных данных будет меньше 13 символов tr. Я не вычислял вероятность этого, вычисления немного хитры.
Касперд
6
Лучше сделать это так:<dev/urandom tr -dc "$charset" | head -c "$length"
PSkocik
3
+1 Вот быстрая попытка включить другие символы со страницы специальных символов пароля OWASP , экранированной для командной строки bash:tr -dc A-Za-z0-9\!\"#$\&\'\(\)\*+,-./\:\\\\\;\<=\>\?@[]^_`{\|}~
Rup
2
@Rup Я не уверен, что не работает с вашей tr ..командой, но просто цитирование все (кроме одинарных кавычек) работает - tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~'.
Кенни Эвитт
144

Для генерации случайного пароля вы можете использовать pwgen:

pwgen генерирует случайные, бессмысленные, но произносимые пароли. Эти пароли содержат либо только строчные буквы, либо смешанные прописные и строчные буквы, либо вставленные цифры. Заглавные буквы и цифры размещаются таким образом, чтобы их было легче запомнить, когда запоминаются только слова.

Сгенерируйте 7 паролей длиной 13:

geek@liv-inspiron:~$ pwgen 13 7
Eu7Teadiphaec giepahl3Oyaiy iecoo9Aetaib4 phaiChae6Eivi athoo3igee8Co
Iphu4ufeDeelo aesoYi2lie9he 

Как упоминалось в комментариях, вы можете избежать уменьшения энтропии с помощью -sаргумента (то есть генерировать более безопасные, совершенно случайные, но трудно запоминающиеся пароли):

geek@liv-inspiron:~$ pwgen -s 13 7
eAfycrPlM4cYv 4MRXmZmyIVNBp D8y71iqjG7Zq7 FQRHcserl4R8O yRCUtPtV3dsqV
0vJpp2h0OrgF1 QTp7MKtJyTrjz 

Для генерации случайных имен пользователей вы можете использовать gpw:

Этот пакет генерирует произносимые пароли. Он использует статистику трехбуквенных комбинаций (триграфов), взятых из любых словарей, которые вы используете.

Генерация 7 паролей (имен пользователей) длиной 13:

geek@liv-inspiron:~$ gpw 7 13
sreepoidahsas
risadiestinge
ntodynesssine
deodstestress
natinglumperm
riasigentspir
enderiferback
landroni
источник
21
+1 за не изобретать велосипед. Если вы не хотите уменьшить энтропию «произносимого» ограничения, просто используйте pwgen -s.
Нейт Элдридж
123

Я использую opensslкоманду, швейцарский армейский нож криптографии.

openssl rand -base64 12

или же

openssl rand -hex 12
400 кот
источник
10
rand -hexограничит вывод только 16 символами, а не 90+ на моей клавиатуре. Base64 лучше, потому что это 64 символа, но это не случайно (например, существуют предсказуемые шаблоны заполнения, и, возможно, некоторые символы появляются чаще, чем другие).
Мартин Турной
@Carpetsmoker: обратите внимание, что в примере openssl rand -base64 12выводится 16 символов (поскольку 256 значений сопоставлены с 64). И шестнадцатеричный пример выдает 24 символа. В случае гексагона нет потерь, так как это простое отображение 1: 2, но может быть немного в случае base64, так как используется заполнение. Основа не влияет на случайность, это способ, которым один сопоставлен с другим, который делает. (и общее количество бит намного важнее).
Деннис Уильямсон
Вопрос был «Как сгенерировать случайную строку определенной длины» @DennisWilliamson, поэтому, несмотря на то, что ваш комментарий верен как таковой , он не является корректным в контексте этого вопроса .
Мартин Турной
@Carpetsmoker: В этом случае, это тоже не ответ.
Деннис Уильямсон
4
Этот ответ заслуживает большего количества голосов. urandom, pwgen, gpw и т. д. могут или не могут быть доступны в вашей системе; также в разных средах политика, которая работает на одном, может не работать на другом. Это было бы довольно дисфункциональной установкой, если бы не было openssl. Еще лучше: openssl rand -base64 32 | tr -d / = + | cut -c -16 Это даст вам 32 символа минус не-alphanum и обрезается до 16 символов. Позволяет легко иметь дело как администратор. У пользователей есть только алфавиты (которые они, как правило, ценят). Длина достаточно велика, чтобы удаление специальных символов не оказывало чрезмерного влияния на энтропию. Golden.
Zentechinc
18

Вот как я это делаю. Он генерирует 10 символов случайной строки. Вы можете оптимизировать его, заменив «свернуть» другими инструментами для обработки строк.

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1
x1b2j
источник
1
+1 Этот ответ POSIXly правильно, за исключением использования /dev/urandomконечно
Гарольд Фишер
12

Чтобы создать пароль с максимально возможной энтропией с помощью стандартных инструментов Linux, которые встроены в каждый дистрибутив, который я использую:

< /dev/urandom tr -cd "[:print:]" | head -c 32; echo

Это выводит все печатные символы ASCII - от 32 (пробел) до 126 (тильда, ~). Длина пароля может управляться с headрусским -cфлагом. Есть также другие возможные наборы символов tr(чтобы не включать пробел, используйте только символы 33-126 [:graph:]).

drws
источник
1
Чем это отличается от существующих ответов? В частности, на ум приходит Герберт .
Фокс
3
@Fox В его решении используется жестко закодированный список символов, что не является рекомендуемой практикой программирования из-за читабельности, компактности и чистоты кода. Кроме того, некоторые из специальных печатаемых символов ASCII можно интерпретировать с помощью bash, не говоря уже о наиболее очевидном недостатке его одной строки - если желательна максимальная энтропия, можно ли быть уверенным, что все доступные символы включены в список? И что нет дубликатов, которые могли бы изменить поведение tr? Его ответ должен быть заменен моим, так как вы спросили :)
drws
2
Многие, если не большинство веб-сайтов имеют ограничения на символы, которые могут быть в пароле, поэтому жесткое кодирование '[: print:]' не кажется мне лучше, чем жесткое кодирование списка специальных символов OWASP-пароля. Я чувствую, что почти каждый ответ здесь может быть улучшен с помощью переменной, но это настолько незначительное изменение, что я бы предложил только редактирование
Fox
1
< /dev/urandom tr -cd '[:graph:]'| tr -d '\\' | head -c 32; echoесли вы не хотите ` characters in generated string. `, потому что во многих языках это экранирующий символ, возникают проблемы
mzzzzb
< /dev/urandom tr -cd "[:print:]" | tr -d ' \\/\`\|' | head -c 32; echoисключить | \ / `и космос
Райан Краге
9

В зависимости от уровня случайности, который вы хотите, вы можете просто использовать встроенную переменную bash (также zshи ksh, возможно, других) $RANDOM:

$ echo $RANDOM | tr '[0-9]' '[a-z]'
bfeci
$ echo $RANDOM | tr '[0-9]' '[a-z]'
cijjj

Методы, читающие непосредственно из /dev/urandom, намного проще, но для завершения вы также можете использовать $RANDOM:

echo $(for((i=1;i<=13;i++)); do printf '%s' "${RANDOM:0:1}"; done) | tr '[0-9]' '[a-z]'

Важно : это решение будет генерировать только случайные строки, используя первые 10 букв алфавита. Будет ли этого достаточно для вас, зависит от того, для чего вам это нужно.

Тердон
источник
Как вы контролируете длину сгенерированной строки?
Ландрони
@landroni Я не думаю, что вы не можете использовать цикл, пока не получите правильную длину. $RANDOMнапечатает число от 0 до 32767.
Terdon
Я пытался выполнить команду примерно 20 раз, и я никогда не смогу получить ничего дольше, чем 4-5 символов ...
landroni
2
@landroni спасибо, я добавил способ указать длину, но это не очень хорошо. Я бы просто использовал что-то вроде rand=$(head -c 100 /dev/urandom | tr -dc A-Za-z0-9 | head -c13)этого.
Тердон
1
@SkippyleGrandGourou очень хорошая мысль. Я добавил это в ответ, спасибо.
Тердон
8

Вдохновленный Пабло Репетто, я получил это легко запоминающееся решение:

shuf -zer -n20  {A..Z} {a..z} {0..9}

-z избегает многострочного вывода

-e повторяем результат

-r разрешить любому персонажу появляться несколько раз

-n20 случайная строка длиной 20 символов

{A..Z} {a..z} {0..9} разрешенные классы символов

shuf является частью linux coreutils и широко доступна или, по крайней мере, портирована.

entwicklerseite
источник
5

@Brandin объяснил в комментарии к другому ответу, как получить максимум 100 байтов от /dev/urandomиспользования head -c 100. Еще один способ сделать это с dd:

tr -dc A-Za-z0-9 < /dev/urandom | dd bs=100 count=1 2>/dev/null

В 2>/dev/nullконце ddкоманды подавляется вывод «... records in / ... records out».

Я не знаю каких-либо существенных преимуществ / недостатков между этими двумя методами.

У меня была проблема с обоими методами trжаловаться на ввод. Я думал, что это потому, что ему не нравилось получать бинарный ввод, и поэтому предложил сначала выполнить фильтрацию /dev/randomс помощью iconv -c -t US. Однако Жиль предложил другой диагноз и решение, которое работает для меня:

LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | dd bs=100 count=1 2>/dev/null
dubiousjim
источник
По какой-то причине iconvрешение использует одно ядро ​​процессора и не дает выходных данных (я подождал несколько секунд, прежде чем его убить) ...
landroni
На моей Ubuntu 14.04 система iconv предоставляется libc-bin2.19. Я не уверен, если это тот же значок ...
Landroni
trподдерживает бинарный ввод. Однако на диапазон, на который A-Zмогут повлиять настройки локали. ПопробуйтеLC_ALL=C tr …
Жиль
1
@Gilles В соответствии со спецификацией POSIX он не «поддерживает двоичный ввод». Только GNU trделает, потому что он вообще не поддерживает многобайтовый режим (например, в прошлый раз, когда я проверял его, изменение регистра осуществлялось путем простой установки шестого бита каждого байта). Другие системы (например, BSD) действительно поддерживают многобайтовый режим, и это потерпит неудачу, поскольку вероятность того, что случайный входной поток также является допустимым многобайтовым потоком, в большинстве кодирований очень мала. GNU может добавить многобайтовую поддержку в любой момент, и в этот момент это не удастся. Конечно, установка LC_ALL=Cисправит это.
Мартин Турной
@Carpetsmoker POSIX требует trобработки двоичного ввода (в языке C). (Ну, ладно, это только говорит явно, что нулевые байты должны поддерживаться, это не говорит, что непустые файлы, не заканчивающиеся символом новой строки, должны поддерживаться, но на практике это всегда так.)
Жиль
4

APG включен по умолчанию в некоторых дистрибутивах Linux.

Чтобы сгенерировать пароли размером от 5 до 10 в подмножествах Special, Numeric, Capital и Lower, введите команду:

apg -MSNCL -m 5 -x 10

И возвращает

@OpVeyhym9
3:Glul
3DroomIc?
hed&Os0
NefIj%Ob3
35Quok}

Как сказал @landroni в комментарии.

Сэндберг
источник
1
Вот варианты для генерации случайных 14-буквенных паролей, содержащих множество специальных символов:apg -a1 -m14
neuhaus
3

Вы можете использовать один из md5инструментов, который имеет именно эту цель. В случае создания совершенно случайного пароля вы можете использовать md5pass. Это очень простой в использовании и очень полезный инструмент, поскольку вы можете использовать «обычный текст» вместе с «солью» для создания скачкообразного кода того же пароля, который вы можете восстановить впоследствии, или, в качестве альтернативы, вы можете получить полностью случайный пароль все время. Общее использование:

md5pass [password] [salt]

где password- выбранное слово, которое будет использоваться для построения случайной строки, и saltпереход в байтах, который будет использоваться. Нравится:

md5pass word

$1$.MUittVW$j.XDTF1QRnxqFdXRUiSLs0

Это создаст для вас пароль с произвольной последовательностью. Если вы используете нет salt, то вы не сможете воссоздать эту же строку позже.

Однако, если вы используете saltкак это:

md5pass word 512

$1$512$.0jcLPQ83jgszaPT8xzds0

затем вы можете создать последовательность, которую вы можете восстановить, если вы используете слово в сочетании с той же солью (или прыжком), если оно было первоначально определено.

Шутка старший ок
источник
Когда используется a salt, это звучит подобно подходу PasswordMaker ...
landroni
-Да может показаться похожим на пароль одного производителя, но разница в том, что это не коммерческая программа или что-то еще, потому что набор инструментов md5, «md5pass, md5sum, md5sum.textutils», которые здесь рассматриваются, доступны и доступны системе бесплатно некоторые !!!
Шутка старшего ОК
Я действительно имел в виду PasswordMaker , который также является открытым и некоммерческим.
Landroni
2

Эти две команды генерируют случайные пароли и парольные фразы соответственно.

shuf --random-source=/dev/urandom --repeat --head-count=20 file_with_characters | tr --delete '\n'

shuf --random-source=/dev/urandom --repeat --head-count=7 file_with_words | tr '\n' ' '

Генератору паролей требуется файл file_with_characters, содержащий все символы, которые вы хотите использовать в качестве пароля, по одному символу в строке и ровно по одному разу каждый. Файл не должен содержать пустых строк, а строки должны заканчиваться символом новой строки.

Генератору парольной фразы требуется файл file_with_words, содержащий все слова, которые вы хотите использовать для парольной фразы, по одному слову в строке и ровно по одному разу каждое. Файл не должен содержать пустых строк, а строки должны заканчиваться символом новой строки.

Опция --head-count указывает длину пароля - в символах - или пароль - в словах.

Пабло Репетто
источник
1

Я обнаружил, что передача / dev / urandom to tr на macOS не работает. Вот еще один способ:

set="abcdefghijklmonpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
n=6
rand=""
for i in `seq 1 $n`; do
    char=${set:$RANDOM % ${#set}:1}
    rand+=$char
done
echo $rand
Джейк
источник
Проверьте последний пример моего ответа. Он не использует tr. unix.stackexchange.com/a/494931/203075
Зибри
1

Я использую:

base64 < /dev/urandom | tr -d 'O0Il1+\' | head -c 44

Это дает мне 57 возможных символов. Строка может быть скопирована (удалена +и \) или напечатана и перепечатана, так как трудно различимые символы ( I1lO0) были удалены.

  • 44 символа дают мне: log 2 (57 44 )> 256,64 бит энтропии
  • 22 символа дает мне: log 2 (57 22 )> 128,32 бит энтропии

Мне это нравится, потому что:

  • команда проста для ввода и запоминается
  • он использует стандартные системные инструменты - без дополнительных двоичных файлов
  • не «тратит» много случайности (использует 89% случайных битов, которые он получает, по сравнению с ~ 24% для решений, напрямую передаваемых в tr)
  • 22 и 44 символа соединяются довольно хорошо (чуть выше даже) общая сила двух точек останова
  • вывод может быть легко выбран и вставлен или напечатан и перепечатан с минимальными человеческими ошибками
  • короче, чем шестнадцатеричные (32 и 64 вместо 22 и 44) решения, такие как md5sum / sha1sum и т. д.

Благодарим https://unix.stackexchange.com/a/230676/9583 и особенно комментарии для моего первоначального вдохновения.

Iiridayn
источник
Если вам нужны цифры / специальные символы - как правило , там будет номер, если вы не можете безопасно добавлять 1без уменьшения энтропии (при создании нового , чтобы получить один ж / число делает уменьшить энтропию). Вы также можете безопасно добавить, !не уменьшая энтропию. Ни одна из этих схем не увеличивает ценность энтропии, но может привести сгенерированную строку в соответствие со старыми требованиями к паролям.
Iiridayn
1

Философия Unix, заключающаяся в том, что «множество небольших инструментов хорошо справляются с одной задачей», очень хорошо вам подходит в этом случае.

  • /dev/urandomэто поток случайных «байтов» (которые включают непечатаемые символы)
  • base64 кодирует байтовые данные [A-Za-z0-9/+] (которые полностью печатаются)
  • dd копирует ввод в вывод, применяя модификаторы, заданные в качестве аргументов (которые могут включать размер блока и количество блоков)

OSX

base64     < /dev/urandom | dd bs=1k count=1

Linux

base64 -w0 < /dev/urandom | dd bs=1k count=1

Примечания:

  • Если вам нужно подмножество символов, вы можете вставить модификатор в трубу.
    • Пример: tr -d '[A-Z/+]'избавиться от заглавных букв и +и/
  • Вы можете установить bs(размер блока) на любую длину, которая вам нужна.
  • В Linux base64по умолчанию переносится на 76 столбцов и должен быть сброшен, -w0если вы этого не хотите.
Бруно Броноски
источник
1

Я хотел бы добавить свою обычную команду для создания пароля

$ cat /dev/urandom | base64 | head -n 1 |tr -dc '[:alnum:]' |cut -c -13
b0R55751vWW9V

Чтобы настроить длину пароля, измените число в команде cut на требуемую длину, например, 24 символа.

$ cat /dev/urandom | base64 | head -n 1 |tr -dc '[:alnum:]' |cut -c -24
WFBhVHuKbrnRhd5kdWXPzmZG

Не хотите путать 0 или O, 1 или L? Отфильтруйте это с другимtr

$ cat /dev/urandom | base64 | head -n 1 |tr -dc '[:alnum:]' | tr -d '0O1l'|cut -c -24
JuCphwvhrhppD9wVqfpP2beG

Лично я никогда не предпочитаю специальный символ в пароле, поэтому я выбираю только [:alnum:]для своего генератора паролей

Шаруццаман Ахмат Раслан
источник
0

Я поддерживаю secpwgenAlpine Linux и сохраняю исходники на своем Github .

Может генерировать случайные строки или фразы для двусмысленности:

musl64 [~]$ secpwgen
USAGE: secpwgen <-p[e] | -A[adhsy] | -r | -s[e]> N

PASSPHRASE of N words from Diceware dictionary
  -p    generate passphrase
  -pe   generate enhanced (with symbols) passphrase

SKEY PASSWORD of N words from S/Key dictionary
  -s    generate passphrase
  -se   generate enhanced (with symbols) passphrase

ASCII RANDOM of N elements (at least one option MUST be present)
  -A    Each letter adds the following random elements in output:
    a    alphanumeric characters
    d    decimal digits
    h    hexadecimal digits
    s    special characters
    y    3-4 letter syllables

RAW RANDOM
  -r    output BASE64 encoded string of N random BITS
  -k    output koremutake encoding of N random BITS

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

musl64 [~]$ secpwgen -Aas 13
----------------
WK5#*V<]M3<CU ;ENTROPY=67.21 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.

musl64 [~]$ secpwgen -Aa 13
----------------
GP0FIEBM9Y3BT ;ENTROPY=67.21 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.

Чтобы пользователи запомнили пароль, используйте фразы diceware:

musl64 [~]$ secpwgen -p 5
----------------
wq seen list n8 kerr  ;ENTROPY=65.00 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.

Мне лично нравится:

musl64 [~]$ secpwgen -r 512
----------------
h62lL7G4gwh3/j9c7YteQvVXoqJrQKKPWVR3Lt7az36DcfWZWtUgBT19iwmJBwP4UahNzPe7qYD7OcklUFpCzQ== ;ENTROPY=512.00 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.
Стюарт Кардалл
источник
0

Мой путь для очень безопасного пароля (где 16 - длина pw):

cat /dev/urandom | tr -cd [:graph:]|head -c 16

Пример результата:

jT@s_Nx]gH<wL~W}

Или, альтернативно, для создания нескольких паролей:

кот / dev / urandom | tr -cd [: graph:] | fold -w 16 | head -6

Пример результата:

7ck%G7'|f&}_8(]s
<?*]E.CG[NB'gK#A
:tF-WPTOa3!i7S(h
2xy(>=%3=Kb1B$`6
*98Lf{d?Jzb}6q1\
E7uCEAN2Hz]]y|5*

Немного менее безопасно (меньший набор символов):

cat /dev/urandom |base64 -w 0|fold -w 16|head -6

Пример результата:

rJqYxYZLOTV+A45w
PUKQ+BoBf6yfZw5m
+LRfpsN9CsLRiN8V
yMS6zDpL6NHmG17s
yTUWPG7Rum97schi
cognvjVwaKaAyPRK
Zibri
источник
-1

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

Вот основной пример в Python:

import random # import random library  
passFile = open("passwords.txt", 'w') # create file passwords.txt
passNum = int(input("Number of passwords: ")) # get number of  passwords
passLength = int(input("Password length: ")) # get length of passwords  
for i in range(passNum):
    password = "" # reset password
    for i in range(passLength):
        num = random.randint(65, 122) # get random number
        while num in range(91, 97): # Don't include punctuation
            num = random.randint(65, 122)
        password += chr(num) # add character to current password 
    passFile.write(password + "\n") # add current password to file  
passFile.close() # close file

РЕДАКТИРОВАТЬ: добавлены комментарии и добавлен код для создания нескольких паролей и записи их в файл

camelCaseEnthusiast
источник
3
Если бы мне дали силу Python, я бы НЕ делал это таким образом. Было бы намного проще использовать объединение в строке, содержащей все символы, допустимые для пароля, и использовать random для выбора символов.
Майк МакМэхон
лучше использовать Python как этот code.activestate.com/recipes/578468-password-generator-mkpasswd
Grijesh Chauhan
-2

Я хотел бы эту команду:

date +%s | sha256sum | base64 | head -c 12
Евгений Коньков
источник
1
Я бы предпочел использовать более случайный подход наносекунд: так date +%N как если вы генерируете много пользователей и паролей в скрипте, секунды могут стать одинаковыми для многих или даже для всех команд даты, таким образом, производя идентичные пароли.
Джон Мэр
1
@JohnMayor: является ли этот подход более надежным dd if=/dev/random bs=512 count=1?
Евгений Коньков
8
Этот ответ очень опасен! Вы генерируете пароль (пароли) из известного начального числа, которое легко предсказать. Я мог бы сгенерировать все пароли, сгенерированные с использованием этого метода за последние годы, и использовать этот список для целей перебора.
Поток
-4

Я захожу на http://passwordsgenerator.net/, он позволяет генерировать строки случайных символов длиной до 2048 символов, выбирать верхний регистр, нижний регистр, цифры от 0 до 9, знаки пунктуации или любую комбинацию.

KrazyKyngeKorny
источник
2
Я уточнил вопрос, чтобы было ясно, что сгенерированные в автономном режиме строки предпочтительнее. Генерация пароля непосредственно на веб-сайте, особенно если соединение не HTTPS (как в вашем ответе), небезопасна.
Landroni
1
Получение случайного пароля из интернета невероятно глупо и наивно. Кто-то теперь знает пароль, который вы используете для какой-либо службы или сайта, и уникальные личные данные о вас (IP-адрес, информация о браузере / среде). Этот сайт теперь может связывать информацию с другими данными, собранными о вас. Например, вы когда-то писали в список рассылки, ваш IP-адрес находится в заголовке письма, поэтому у нас теперь есть пароль, имя и адрес электронной почты ... Вы действительно доверяете случайным незнакомцам свои пароли здесь.
Мартин Турной