Як генерувати випадкову рядок?


209

Я хотів би створити випадковий рядок (наприклад, паролі, імена користувачів тощо). Повинно бути можливим вказати необхідну довжину (наприклад, 13 символів).

Які інструменти я можу використовувати?

(З міркувань безпеки та конфіденційності бажано, щоб рядки створювалися в режимі офлайн, на відміну від он-лайн на веб-сайті.)


1
В AskUbuntu вже є хороші відповіді . (Я використовую apgособисто.)
Sparhawk

1
@Sparhawk Питання / відповіді AskUbuntu докладніше стосуються інструментів лістингу. Будь ласка, подумайте про те, як додати тут відповідь, де показано, як використовувати apgдля генерації випадкових рядків.
landroni

1
Будьте обережні з використанням генерації випадкових чисел на комп’ютерах. Деякі з них є набагато менш випадковими, ніж вони з'являються, але сказати різницю між "хорошим" та "поганим" генерацією випадкових чисел досить важко.
Sobrique

@Sobrique Відмінний момент щодо генераторів псевдовипадкових чисел (наприклад /dev/urandom). Було б добре отримати відповіді, використовуючи справжні генератори випадкових чисел, засновані, наприклад, на random.org .
landroni

25
Відповідь жарту: Щоб створити справді випадковий рядок, поставте нового користувача перед Emacs (або Vim) і попросіть його вийти. ;)
Wildcard

Відповіді:


186

Мій улюблений спосіб зробити це - використовувати /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. Я не обчислював ймовірність того, що це станеться, розрахунки трохи складні.
kasperd

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

21
+1 за не винахід колеса. Якщо ви не хочете, щоб зменшена ентропія "вимовного" обмеження просто скористайтеся pwgen -s.
Нейт Елдредж

123

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

openssl rand -base64 12

або

openssl rand -hex 12

10
rand -hexобмежить вихід лише 16 символами, а не 90+ на моїй клавіатурі. base64 кращий тому, що це 64 символи, але це не випадково (наприклад, є передбачувані шаблони прокладки, і, можливо, деякі символи з’являються частіше, ніж інші).
Martin Tournoij

@Carpetsmoker: Зауважте, що приклад openssl rand -base64 12дає 16 символів виводу (оскільки 256 значень відображаються на 64). А шістнадцятковий приклад видає 24 символи. У випадку з шістнадцятковою збитком немає втрат, оскільки це просте зіставлення 1: 2, але в корпусі base64 може бути небагато, оскільки використовується накладка. Радікс не впливає на випадковість, це так, як одна карта відображається на іншу. (а загальна кількість бітів набагато важливіша).
Денніс Вільямсон

Питання було "Як генерувати випадкову рядок певної довжини" @DennisWilliamson, тому, хоча ваш коментар правильний як такий , він не правильний у контексті цього питання .
Мартін Турной

@Carpetsmoker: У цьому випадку це також не є відповіддю.
Денніс Вільямсон

4
Ця відповідь заслуговує на більшу кількість відгуків. urandom, pwgen, gpw тощо можуть бути або не доступні у вашій системі; також в різних середовищах політика, яка працює над одним, може не працювати на іншому. Було б досить нефункціональним налаштуванням, щоб не було Opensl. Ще краще: openssl rand -base64 32 | tr -d / = + | cut -c -16 Це дасть вам 32 знака за мінусом без букв і оброблено до 16 char довжиною. Полегшує роботу з адміністратором. Користувачі мають лише літери (що вони, як правило, цінують). Довжина досить довга, щоб видалення спеціальних символів не надто впливало на ентропію. Золотий.
zentechinc

18

Ось як, я це роблю. Він генерує 10 символів випадкової рядка. Ви можете оптимізувати його, замінивши "складку", іншими інструментами для обробки рядків.

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1

1
+1 Ця відповідь POSIXправильно, мінус використання /dev/urandomкурсу, звичайно
Гарольд Фішер,

12

Для створення пароля з максимально можливою ентропією за допомогою стандартних інструментів Linux, вбудованих у кожен дистрибутив, який я використовую:

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

Це виводить усі символи для друку ASCII - від 32 (пробіл) до 126 (тильда, ~). Довжину пароля можна керувати прапором head's -c. Також є інші можливі набори символів tr(щоб не включати пробіл, просто використовуйте символи 33-126 [:graph:]).


1
Чим це відрізняється від існуючих відповідей? Зокрема, на думку приходить Герберт .
Фокс

3
@Fox Його рішення використовує жорсткий список символів, що не є заохоченою практикою програмування через читабельність коду, компактність та чистоту. Також деякі спеціальні символи для друку ASCII можуть бути інтерпретовані bash, не кажучи вже про найбільш очевидний недолік його одного вкладиша - якщо потрібна максимальна ентропія, чи можна бути впевненим, що всі наявні символи включені до списку? І що немає дублікатів, які могли б змінити поведінку тр? Його відповідь слід замінити моєю, оскільки ви запитали :)
drws

2
Багато, якщо не більшість веб-сайтів мають обмеження щодо символів, які можуть бути паролем, тому жорстке кодування '[: print:]' не відчуває мене кращого, ніж жорстке кодування списку спеціальних паролів OWASP. Я відчуваю, що майже кожну відповідь тут можна покращити за допомогою змінної, але це така незначна зміна, що я б тільки запропонував редагувати
Фокс

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

В залежності від рівня випадковості ви хочете, ви можете просто піти з Баш (також 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

@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)цього.
terdon

1
@SkippyleGrandGourou дуже хороший момент. Я додав це до відповіді, дякую.
тердон

8

Натхненний Пабло Репетто, я закінчився цим простим запам'ятовуючим рішенням:

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

-z уникає багаторядкового виведення

-е відлуння результату

-r дозволити появі будь-якого символу кілька разів

-n20 випадкова рядок довжиною 20 символів

{A..Z} {a..z} {0..9} дозволені уроки чару

shuf є частиною ядра Linux та широко доступною або принаймні перенесеною.


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команди потрібно придушити вихід "... записи в / ... записи з".

Мені невідомі істотні переваги / недоліки між цими двома методами.

У мене виникли проблеми з обома методами 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

Чомусь iconvрішення максимізує одне ядро ​​CPU і не дає результату (я чекав десь 10 с, перш ніж його вбити) ...
landroni

У моїй системі Ubuntu 14.04 iconv передбачено libc-bin2.19. Я не впевнений, чи це той самий iconv ...
landroni

trпідтримує бінарний ввід. Однак на діапазон, подібний, A-Zможуть впливати параметри місцевості. СпробуйтеLC_ALL=C tr …
Жиль

1
@Gilles Відповідно до специфікації POSIX, він не "підтримує бінарний ввід". Тільки GNU trробить, тому що він взагалі не підтримує багатобайтові (наприклад, востаннє, коли я перевіряв, чи змінився регістр був виконаний, просто встановивши шостий біт кожного байта). Інші системи (наприклад, BSD) підтримують багатобайтові, і це не вдасться, оскільки шанс, що випадковий вхідний потік є також дійсним багатобайтовим потоком, у більшості кодувань дуже малий. GNU може додати багатобайтову підтримку в будь-який момент, і в цей момент це не вдасться. Звичайно, налаштування LC_ALL=Cце виправить.
Martin Tournoij

@Carpetsmoker POSIX вимагає trобробляти бінарний ввід (на мові C). (Ну гаразд, це говорить лише явно, що нульові байти повинні підтримуватися. Це не говорить про те, що непідписані файли, що не закінчуються символом нової рядки, повинні підтримуватися, але на практиці це завжди так).
Жиль

4

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

Для генерації паролів розміром від 5 до 10 у підмножинах Special, Numeric, Capital та нижчі команди:

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

тоді ви можете створити послідовність, яку ви зможете відновити, якщо вживати слово в поєднанні з тією ж сіллю (або стрибати), якщо воно було визначено спочатку


Коли 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 для 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
Zibri

1

Я використовую:

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

Це дає мені 57 можливих символів. Рядок можна копіювати (видалити +та \) або надрукувати та повторно ввести, оскільки важкі для розрізнення символи ( I1lO0) були видалені.

  • 44 символи дає мені: журнал 2 (57 44 )> 256,64 біта ентропії
  • 22 символи дає мені: журнал 2 (57 22 )> 128,32 біта ентропії

Мені це подобається тому, що:

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

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


Якщо вам потрібні цифри / спеціальні символи - як правило , там буде номер, якщо ви не можете безпечно додавати 1без зменшення ентропії (при створенні нового , щоб отримати один з / число робить зменшити ентропію). Ви також можете безпечно додати знак !без зменшення ентропії. Жодна схема також не збільшує ентропію, але нічого не може привести у відповідність до старих вимог пароля.
Іірідайн

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

Я підтримую secpwgenв Alpine 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.

Щоб користувачі запам'ятали пароль, використовуйте фрази програмного забезпечення:

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}

Або, як створити кілька паролів:

кіт / дев / урадон | tr -cd [: graph:] | скласти -w 16 | голова -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

-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

EDIT: додані коментарі та доданий код для створення декількох паролів та запису їх у файл


3
Якби давали силу Python, я б НЕ робив це таким чином. Було б набагато простіше використовувати з'єднання в рядку, що містить усі символи, дійсні для пароля, та використовуючи випадкові для вибору символів.
Майк Макмахон

краще використовувати 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, розділові знаки або будь-яку комбінацію.


2
Я уточнив це питання, щоб зробити його явним, що переважні рядки, що генеруються в режимі офлайн. Генерування пароля безпосередньо на веб-сайті, особливо якщо з'єднання не є HTTPS (як у вашій відповіді), не є безпечним.
landroni

1
Отримати випадковий пароль з Інтернету надзвичайно дурно і наївно. Хтось тепер знає пароль, який ви використовуєте для якоїсь послуги чи сайту та унікальні особисті дані про вас (IP-адреса, інформація про браузер / оточення). Цей веб-сайт тепер може перехресно посилатись на іншу інформацію, зібрану про вас. Наприклад, колись ви опублікували список розсилки, ваша IP-адреса знаходиться в заголовку пошти, тому у нас зараз є пароль, ім’я та адреса електронної пошти ... Ви справді довіряєте випадковим незнайомцям своїм паролем.
Мартін Турноїй
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.