22 个版本 (14 个重大更新)

新功能 0.15.1 2024年8月22日
0.15.0 2024年7月30日
0.14.1 2024年4月4日
0.14.0 2023年12月11日
0.2.0 2019年9月9日

#210命令行工具

Download history 5/week @ 2024-05-19 3/week @ 2024-06-09 1/week @ 2024-06-16 2/week @ 2024-06-30 15/week @ 2024-07-07 132/week @ 2024-07-28 5/week @ 2024-08-04 5/week @ 2024-08-11

每月下载量 142

MIT 许可证

130KB
907

关于

xkcd风格的密码生成器

xkcd #936: 密码强度

用法

$ xpg -h
xpg 0.15.1 <https://crates.io/crates/xpg>

xkcd-style password generator

Usage: xpg [OPTIONS] [PATTERNS]...

Arguments:
  [PATTERNS]...  Pattern(s) (see note 1) [default: `wwww`, `-L`: `{a}`]

Options:
  -c, --count <NUMBER>     Number of passwords (0:∞ ) [default: 1]
  -l, --length <NUMBER>    Length
  -m, --minimum <NUMBER>   Minimum length
  -M, --maximum <NUMBER>   Maximum length
  -a, --attempts <NUMBER>  Attempts (see note 2) [default: 10]
  -C, --config <PATH>      Configuration file
  -e, --extended           Merge extended words (see note 3)
  -L, --list               List words in `{sub}`(s)
  -d, --dump-config        Print configuration
  -r, --readme             Print readme
  -h, --help               Print help
  -V, --version            Print version

---

Notes

1. Patterns
    * Words
        * `W`: WORD
        * `w`: word
        * `T`: Word
        * `k`: `shuffle(cccc(c|d)(C|c))`
        * `{sub}`: see `WordKind`s section in readme
    * Characters
        * `C`: A-Z
        * `c`: a-z
        * `d`: 0-9
        * `s`: `~!@#$%^&*-_=+;:,./?()[]{}<>`
        * `a`: `C` | `c` | `d` | `s`
    * Special
        * `keychain`
        * `codename`
        * `codename-series`
        * `haiku`
        * `haiku+`
        * `haiku-`
        * `haiku--`
        * `haiku++`
        * `haiku+++`

2. Ten attempts are made to satisfy the given length requirements by default;
   use `-a N` and set `N` to the number of attempts to increase chances.
   It will exit with an error if unable to satisfy requirements; some
   configurations will always produce an error.

3. Extended words are only available in exclusively extended word kinds by
   default; however, with `-e`, they are merged with regular word kinds; use
   with the `-L` option to see its effect.
$ xpg -V
xpg 0.15.1

请参阅下面的 配置 部分。

示例

$ xpg
copyoslobecomespace

生成10个密码

$ xpg -c 10
historydesignbutterbeautiful
moscowchanceshoesdrink
eggschangewhethershare
pleasefilledjordannight
tillstaplecopyquite
speedaustriadaresilver
indiansharplowerliar
gaveteartakenmany
simplehomeimportantchair
facewhatdelightdesire

持续生成密码

直到 Ctrl+C / SIGINT

$ xpg -c 0
inchesdelawareloneears
waveorderplanesing
britainthemrepeatedentered
roundkitchencarrysold
collegemachinecowsonce
leadertheremountainplural
shipfamilyhalfpage
gavethousandblowhawaii
clothesanswerwondermatch
oxygenspokesugarrome
^C

生成一个由8个单词组成的密码

$ xpg wwwwwwww
dategeneralpreparedquietgoneenteredbecomefell

生成10个由8个单词组成的密码

$ xpg wwwwwwww -c 10
easyfeelthanbrothertubelistmakedaily
goldpaintsaturdaynountroublecopywithskin
firstgamedoctorpickeverlasttellminute
fifthhallequationwheelspiecehowevereasystorm
walesstandcolourmonthsviewoverstudyalthough
allowsnowunderlineplanetbotswanaspokecolourfamous
melodyraiseslowlyfavormuchfinlandincludelord
irelandbringfinallycorrectfootrememberropegain
glassleavecrossbottomdropfieldstormbank
spotrosemountaingermanyexperiencestillfullinclude

生成一个由2个单词和3个数字组成的密码

$ xpg wwddd
memberyesterday429

生成一个由2个单词和2个符号组成的密码

$ xpg wwss
largefact.#

生成一个由2个单词、一个数字和一个符号组成的密码

$ xpg wwds
helpsuggested2_

生成一个由4个单词和2个小写字母组成的密码

$ xpg wwwwcc
killguideniecehungerpf

生成一个由4个单词和2个大写字母组成的密码

$ xpg wwwwCC
remainlegsloneperiodJA

生成一个由4个标题大小写单词组成的密码

$ xpg TTTT
BehindCharacterRootSail

生成一个由4个全部大写单词组成的密码

$ xpg WWWW
STRANGENEVADAPERIODSCIENCE

生成一个由4个单词和5个任意字符组成的密码

“任意字符”可以是小写字母、大写字母、数字或符号。

$ xpg wwwwaaaaa
appleunderlineneptunemodernoNd/0

生成一个由3个单词组成且至少有15个字符的密码

$ xpg www -m 15
preparedjudgeinformation

生成一个由3个单词组成且不超过20个字符的密码

$ xpg www -M 20
studentpulledwent

生成一个由4个单词组成且字符数在20到25个之间的密码

$ xpg www -m 20 -M 25 -a 1000
berlinfuturenorthern

请参阅 用法 注意2。

生成一个由2个单词、3个数字、1个符号和恰好16个字符组成的密码

$ xpg wwddds -l 16 -a 1000
peruneighbor579+

请参阅 用法 注意2。

生成一个包含1个、2个标题大小写单词和!的密码

$ xpg '1TT!'
1GoodbyeInformation!

生成一个包含1个符号、2个形容词、1个名词和2个数字的密码

$ xpg 's{adj}{adj}{n}dd'
+slowelsewild27

生成一个包含2个单词和1个扩展单词的密码

$ xpg 'ww{ext}'
billwelloregon

生成一个包含2个单词和1个标题大小写扩展单词的密码

$ xpg 'ww{T:ext}'
cornscienceGalatea

生成一个包含2个单词和1个全部大写扩展单词的密码

$ xpg 'ww{W:ext}'
hawaiidenmarkJANUARY

生成10个包含4个标题大小写单词和扩展单词合并的密码

$ xpg -ec 10 TTTT
MarkAthenaTearPrice
ConsiderHimselfTakenTall
WashWantsParkBrother
AmsterdamNameOregonMatter
ThalassaBurningFootThrew
TogetherEngineUncleKenya
ShapeBeanSectionLittle
FineArrivedHundredAlso
LittleSummerColombiaShade
WeekSpeakPlanTemperature

生成一个密码链风格的密码

$ xpg keychain
crxoor-uastQc-u5tfco

生成一个代号

$ xpg codename
BUILT COLUMN

生成一个代号系列

$ xpg codename-series
WHICHTRADE SAFEMARKET
WHICHTRADE IRONMANNER
WHICHTRADE NOTHINGSTUDENT
WHICHTRADE SHALLOXYGEN
WHICHTRADE HAPPYFLAT
WHICHTRADE FEELINGPLANTS
WHICHTRADE ONLYPOINT
WHICHTRADE LONESHAKE
WHICHTRADE VARIOUSDESIRE
WHICHTRADE SHARPDRIVE

生成一个包含20个代号的代号系列

$ xpg codename-series -c 20
EXPRESSDELIGHT VARIOUSYESTERDAY
EXPRESSDELIGHT USUALPART
EXPRESSDELIGHT NEARGALAXY
EXPRESSDELIGHT THROWNWEDNESDAY
EXPRESSDELIGHT DEEPSQUARE
EXPRESSDELIGHT WHATSPRING
EXPRESSDELIGHT TOGETHERVERB
EXPRESSDELIGHT SMALLSHOE
EXPRESSDELIGHT GLASSHUSBAND
EXPRESSDELIGHT AWAYGLASS
EXPRESSDELIGHT THIRDSUIT
EXPRESSDELIGHT NEVERHUNTING
EXPRESSDELIGHT FAIRWEEK
EXPRESSDELIGHT TWELVEQUESTIONS
EXPRESSDELIGHT MANYCROPS
EXPRESSDELIGHT IMPORTANTEUROPE
EXPRESSDELIGHT ROUNDDESIRE
EXPRESSDELIGHT REALLYPARAGRAPH
EXPRESSDELIGHT DAILYSTORY
EXPRESSDELIGHT MADEHAND

生成一首俳句

$ xpg haiku
Damascus build touch / Especially opposite / Electricity

生成一个带有音节模式的俳句

$ xpg haiku+
Roll Bulgaria (1,4) / Everyone Fiji fifty (3,2,2) / Cents thirteen spend feed (1,2,1,1)

生成一个带有音节模式的压缩俳句

$ xpg haiku-
Considerable(5)/Dictionary-paragraph(4,3)/Material-view(4,1)

生成一个压缩俳句

$ xpg haiku--
Considerable/Arizona-fruit-word-spent/Electricity

生成一个带有换行的俳句

$ xpg haiku++
Cells Tokyo wagon
Egypt once forever fight
Colombia seat

生成一个包含音节模式和换行的俳句

$ xpg haiku+++
Particular phrase (4,1)
California help member (4,1,2)
India thirteen (3,2)

生成一个包含扩展单词的俳句

$ xpg -e haiku
Upon service sell / Thelxinoe paragraph / Matter window grain

生成一个包含20个任意字符的密码

$ xpg aaaaaaaaaaaaaaaaaaaa
&>ZQ03o7I0!mu!LhxNpv

与上一个示例相同,但更短

这是因为仅字符的模式会被最后一个字符填充到最小长度。

$ xpg a -m 20
MU*{PfY5Avgn%u?&O/*a

从不同的模式中生成3个密码

$ xpg wwww WWWW TTTT
butterrealizeriddencharge
DEVICEFOOLBRIGHTSPAIN
OsloCarefullyWinterNeedle

生成包含1、2、3、4和5个音节的单词密码

$ xpg '{a:1}-{W:a:2}-{T:a:3}-{olympian:4}-{T:ext:5}'
crops-MARKET-President-dionysus-Southcarolina

以颜色/ {color}

$ xpg -L '{color}'
black
blue
brown
gray
green
white
yellow

以颜色/ {color}大写形式显示

$ xpg -L '{W:color}'
BLACK
BLUE
BROWN
GRAY
GREEN
WHITE
YELLOW

以颜色/ {color}的标题形式显示

$ xpg -L '{T:color}'
Black
Blue
Brown
Gray
Green
White
Yellow

计算颜色/ {color}中的单词数量

$ xpg -L '{color}' |wc -l
7

以颜色/ {color}和元素/ {W:el}显示单词列表

$ xpg -L '{color}' '{W:el}'
black
blue
brown
gray
green
white
yellow
GOLD
IRON
LEAD
MERCURY
OXYGEN
SILVER

计算单词数量

$ xpg -L |wc -l
1257

计算扩展单词数量

$ xpg -Le |wc -l
1403

配置

查看config.json或使用-d获取编译到二进制可执行文件中的默认配置。

如果在以下任何位置放置了另一个文件或在运行时通过-C选项提供的路径,则将使用该文件。

  • Linux: /home/username/.config/xpg/config.json
  • Windows: C:\Users\username\AppData\Roaming\qtfkwk\xpg\config\config.json
  • macOS: /Users/username/Library/Application Support/com.qtfkwk.xpg/config.json

WordKind类型

  • 所有扩展单词 / {a.ext}
    • 所有 / {a}
      • 形容词 / {adj}
        • 颜色* / {color}
        • 国籍 / {nat}
      • 副词 / {adv}
      • 连词 / {conj}
      • 感叹词 / {i}
      • 名词 / {n}
        • 复数名词 / {n.pl}
        • 代词 / {n.pro}
        • 单数名词 / {n.s}
          • 天文学 / {ast}
            • 月亮 / {moon}
            • 行星 / {planet}
          • 颜色* / {color}
          • 白天 / {day}
          • 月份 / {mon}
          • 专有名词 / {n.prop}
            • 元素 / {el}
            • 名字 / {name}
              • 女性名字 / {fname}
              • 男性名字 / {mname}
            • 地点 / {place}
              • 城市 / {city}
              • 大陆 / {cont}
              • 国家 / {country}
              • 美国州 / {us-state}
            • 神话学 / {myth}
              • 希腊神话 / {greekmyth}
                • 奥林匹斯神 / {olympian}
                • 地府 / {chthonic}
              • 罗马神话 / {romanmyth}
      • 介词 / {prep}
      • 动词 / {v}
        • 助动词 / {v.aux}
        • 不及物动词 / {v.int}
        • 及物动词 / {v.tr}
        • 动词过去式 / {v.past}
    • 扩展的 / {ext}
      • 名词 / {n}
        • 单数名词 / {n.s}
          • 天文学 / {ast}
            • 月亮 / {moon}
              • 火星月球 / {marsmoon}
              • 木星月球 / {jupitermoon}
              • 土星月球 / {saturnmoon}
              • 天王星月球 / {uranusmoon}
              • 海王星月球 / {neptunemoon}

注意

  1. WordKind / {sub}

  2. 只需设置最具有描述性的 WordKind(s),因为它们会自动包含在更大的词类中。

  3. characters 对象值必须包含 Ccd 键,并且具有非空值。可以添加额外的键/值并使用它们。

  4. {sub} 默认生成小写单词,但如果以 W:T: 前缀,单词将分别为大写或标题格式:即 {W:sub}{T:sub}(将 sub 替换为上面实际的 {sub} 名称)。

  5. {sub} 默认包含所有单词,但如果以 :N 后缀,其中 N 是一个数字,它将仅包含具有该音节数的单词:即 {sub:N}(将 sub 替换为上面实际的 {sub} 名称,并将 N 替换为所需的音节数 ~1-5)。

变更日志

请在 CHANGELOG.md 中找到 仓库

参考

依赖

~4–13MB
~170K SLoC