Один-лайнер, чтобы создать легко запоминающийся пароль?

Что'хороший один-лайнер, чтобы создать легко запоминающийся пароль, как xkcd'ы верно лошадь батарея скрепка или биткоин семян?

Редактировать 1:

Это не то же самое как создание случайной строки поскольку случайные строки не запоминающимся. Сравниваем с обязательный xkcd...

Комментарии к вопросу (3)
Решение

Во-первых, установить словарь языка вы're с помощью:

sudo apt-get install 

Чтобы увидеть все доступные пакеты:

apt-cache search wordlist | grep ^w

Примечание: все инструкции по установке предположим, что вы'вновь, основанный на Debian, ОС.

После того, как вы'вэ установлен словарь выполнить:

WORDS=5; LC_ALL=C grep -x '[a-z]*' /usr/share/dict/words | shuf --random-source=/dev/urandom -n ${WORDS} | paste -sd "-"

Который будет выводить экс:

blasphemous-commandos-vasts-suitability-arbor

Чтобы разбить его вниз:

  • Слов=5;` — выбрать, сколько слов вы хотите, чтобы в вашем пароле.
  • *`Значение lc_all=C в грэп -х '[а-з]' /usr/доли/дикт/слова** — выбрать только те слова, содержащие алфавит строчные буквы (исключая слова с'в них или непонятные символы, как вéКлер).Значение lc_all=C, который гарантирует, что[а-я]` в регулярное выражение выиграл'письмо-как матч t символы, кроме строчных букв без диакритики.
  • Шуфа --случайных-источник=из/dev/urandom -Н ${слова} — выбирали столько WORDS, как вы'вэ просил. --случайных-источник=из/dev/urandom обеспечивает Шуфа семена свой генератор случайных надежно; без него, Шуфа по умолчанию защищенный семян, но может вернуться к незащищенной семя на некоторых системах, таких как Unix и эмуляции некоторых слоев на Windows.
  • паста -СД " на-на" — присоединяюсь ко всем слова с помощью - (не стесняйтесь, чтобы изменить символ на что-то другое).

Кроме того, вы можете обернуть его в функцию:

#!/bin/bash

function memorable_password() {
  words="${1:-5}"
  sep="${2:--}"

  LC_ALL=C grep -x '[a-z]*' /usr/share/dict/words | shuf --random-source=/dev/urandom -n ${words} | paste -sd "$sep"
}

или

#!/bin/sh

memorable_password() {
  words="$1"
  if [ -z "${words}" ]; then
    words=5
  fi

  sep="$2"
  if [ -z "${sep}" ]; then
    sep="-"
  fi

  LC_ALL=C grep -x '[a-z]*' /usr/share/dict/words | shuf --random-source=/dev/urandom -n ${words} | paste -sd "$sep"
}

Оба из которых можно назвать такие:

memorable_password 7 _
memorable_password 4
memorable_password

Возвращение:

skipped_cavity_entertainments_gangway_seaports_spread_communique
evaporated-clashes-bold-presuming
excelling-thoughtless-pardonable-promulgated-forbearing

Бонус

Для ботаников и весело, но не очень надежный пароль, который не'т требует установки словаря, вы можете использовать (любезность @СПД):

WORDS=5; man git | \
  tr ' ' '\n' | \
  egrep '^[a-z]{4,}$' | \
  sort | uniq | \
  shuf --random-source=/dev/urandom -n ${WORDS} | \
  paste -sd "-"
Комментарии (7)

Я Дон'т сделать это с помощью стандартной утилиты, которые не предназначены с шифрования использования в виду. Нет никаких оснований полагать, что они're с помощью ГПСЧ или что они'повторно раздачу правильно, а кто-то, кто знает ваш способ сможет воспроизвести ваши ключевые фразы. Аналогичным образом ведут себя многофункциональных утилит, если вы еще'т знаете, как правильно их использовать.

pwqgen у passwdqc.

Комментарии (3)

Вам нужен словник словаря, поскольку вы упомянули биткоины, скорее всего, вы хотите этого:

https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt

Если ваш родной язык не является английским, есть словари для других языков, доступных в том же хранилище.

Учитывая этот файл english.txt можно сделать случайный выбор с Шуфа:

$ shuf -n 4 english.txt 
anchor
neck
trumpet
response

Обратите внимание, что вы'll необходимо намного больше, чем просто 4 слова для действительно безопасный пароль. 4 слов для онлайн-сервисов, где количество попыток злоумышленник может сделать очень ограничен. Я думаю, что биткоин рекомендация 16 слов, не уверен.

Также в этом примере, каждое слово может появляться только один раз. Если вы хотите, чтобы повторяющиеся слова, добавить опцию --повторить:

$ shuf -n 4 -r english.txt

Что позволит каждому слово появляется более чем один раз.

Если вы хотите, чтобы вывод в одну строку, вы можете просто добавить команды xargs Эхо:

$ shuf -n 4 english.txt | xargs echo
math easily cube daughter

Или, если вы предпочитаете команда подстановки:

$ echo $(shuf -n 4 -r english.txt)
photo milk roast ozone

На заметка на полях, я не'т найти этот стиль пароль должен быть легко запоминающимся.

Ну, на самом деле мне очень повезло с математикой легко куб дочери, так что просто происходит, чтобы сделать его легко придумать историю, где ваша дочь может легко сделать математику с кубиками или любой другой. Это's что-то люди могут относиться к, как лошадь в XKCD'ы например.

Но что же такое якорь ответ раструб шеи? Я'м не является автором комиксов с творчеством в свободное придумать мнемоническое за это. Поэтому он будет забыт в кратчайшие сроки.

Даже если вы можете вспомнить слова, она's жесткий, чтобы помнить их правильном порядке. Это было в математике легко кубик дочь " или " дочь легко математический куб` или что-то еще?

И пароль должен быть случайным, вы'вновь не позволили забрать и изменить его.


Что касается биткоин семена, вы'повторно не должен помнить их. Это просто способ быть в состоянии написать это легко. Кто-нибудь может написать 16 слов на листке бумаги и прочитать их правильно обратно; с случайных букв это'ы гораздо чаще ошибаться.


Если у вас есть вопросы о случайности Шуфа, добавить --случайных-источник=параметр устройства/dev/urandom для команды Шуфа.

См. также https://www.gnu.org/software/coreutils/manual/html_node/Random-sources.html#Random-sources

Комментарии (10)

У меня есть это:

xkcd_password () { 
    command grep "^[[:alpha:]]\{5,8\}$" "${1-/usr/share/dict/words}" | sort --random-source=/dev/urandom -R | head -4
}
Комментарии (9)

Попробуйте это,

shuf --random-source=/dev/urandom -n5 /usr/share/dict/words | sed 's/[^[:alnum:]]//g' | paste -sd_

Вывод:

Quayles_knockwursts_scrotums_Barrie_hauler

Объяснение:

  • `Шуфа --случайных-источник=из/dev/urandom -Н5 /usr/доли/дикт/слова получают 5 случайных слов из словаря файл
    • Current функциональности sed 'ы/[^[:alnum:]]//Г' удалить не буквенно-цифровые символы
  • паста -sd_, соединить слова с подчеркивания (_)

Вы можете использовать любой файл wordlist из интернета вместо `/usr/доли/дикт/слов.

Установите словник, если вы не'т иметь его. Это может быть в вашем репозитории дистрибутивов, например https://packages.debian.org/sid/wordlist:

sudo apt install wamerican
Комментарии (4)

Как предложил @р.. но для машин с RHEL/CentOS в (есть в EPEL РЕПО):

pwgen

Обратите внимание на этот отрывок из pwgen's на странице (выделено мной):

программа pwgen создает пароли, которые разработаны, чтобы быть легко запоминаются людей, в то же время максимально безопасным. Человека-памятные пароли никогда не будет так надежен, как полностью случайные пароли.

Комментарии (4)

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

Используя Шуфа " С " в OpenSSL для обеспечения [а раздал случайным Источник][1], Вы можете повторно генерировать пароли по мере необходимости. Пожалуйста, обратите внимание, что безопасность такого подхода зависит от силы только ваш пароль, так что сделать это рассчитывать.

В следующем примере, случайный семян зависит от

  • ваш пароль (очевидно)
  • целевому назначению (пользователь@узел, кошелек#количество и т. д.)
  • [словник используется][2] (ее хэш)
  • количество слов просил

Изменение любого из этих, и вы получите другой результат.


get_seeded_random() {
    seed=$(printf "%s:" "$@")
    openssl enc -aes-256-ctr -pass pass:"$seed" -nosalt \
    < /dev/zero 2>/dev/null
}

get_random_words() {
    dictionary=$1
    number=$2
    passphrase=$3
    purpose=$4

    dictionary_hash=$(sha1sum < "$dictionary")

    shuf -n "$number" \
         --random-source=
Комментарии (0)

Для полноты:

git clone git@gitlab.com:victor-engmark/xkcd-passphrase-generator.git
cd xkcd-passphrase-generator
./generate.sh
Комментарии (0)

В двух словах:

random.sample(open("/usr/share/dict/words").readlines(), 4)

Производит например:

['controverts\n', "Queensland's\n", 'plaids\n', 'aback\n']

Полный код будет немного дольше, что-то вроде,

import random; print("".join(random.sample(open("/usr/share/dict/words").readlines(), 4)))
Weyden
Geronimo's
Jidda
enumerate

С другой стороны, вы иногда получить Перлз такой:

polyamory
replicates
unmarried
diseases

С другой стороны, вы могли бы сделать слова, которые трудно выговорить или даже типа:

fezzes
Lumière's
tercentenary's
Liliuokalani

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

Комментарии (1)

xkcdpass - это простой способ сделать это без написания острот.

$ xkcdpass 
optimal mycology Kumamoto thorny chrism unsavoury

Есть возможность задать количество слов и т. д.

Для того чтобы установить:

  • Типун Linux и Unix/macOS и: установить xkcdpass (вы можете судо).
  • Если вы Don'Т есть Python / Пип, искать пакеты питон и питон-Пип, для Python 2 или 3.
Комментарии (0)