Diceware 密码短语生成器 — 随机单词密码短语
使用 Diceware 方法从随机真实单词生成强大、难忘的密码短语 - 真正的加密随机性,并诚实地显示实际的熵(以位为单位)。
结果
该工具以 Diceware 的方式生成密码:它不是一串难以输入甚至更难记住的密集随机字符,而是将几个随机独立挑选的普通单词串在一起。像“forest-comet-lantern-guitar-oasis-thistle”这样的密码携带着真实的、可计算的熵,同时仍然是人类可以大声朗读、在手机键盘上输入或在几次尝试后记住的东西——这正是 Diceware 风格一代的设计所围绕的权衡。
随机性是重点,因此这里要认真对待:每个单词都是使用浏览器的 crypto.getRandomValues() 加密安全随机数生成器选择的,并且每次绘制时都会进行适当的拒绝采样。仅当原始 32 位随机值落入可被单词列表长度整除的范围内时,该随机值才会被接受;剩余的值,不均匀的剩余部分将被丢弃并重新滚动。跳过此步骤并仅执行 value % wordlistLength 会稍微偏向低索引单词而不是高索引单词 - 这是一种微妙的统计偏差,幼稚的实现会悄悄引入。该生成器从不走这条捷径。
对熵的诚实是设计的另一半。捆绑的单词列表有 1,821 个独特、明确的日常英语单词 — 这是一个大型、有代表性的列表,但不是经典 Diceware 项目使用的特定 7,776 个单词列表,因此该工具从未声称著名的每单词 12.9 位数字仅适用于该确切列表。相反,每个单词的熵被实时计算为 log2(列表长度),这里每个单词大约为 10.8 位,并且屏幕上的结果始终显示完整的公式 - 字数乘以每个单词的位数,加上任何额外的诚实贡献 - 因此您可以准确地看到总数是如何达到的,而不是相信营销数字。
可选的切换开关也得到了同样的诚实对待。将每个单词大写是一个固定的、确定性的规则,每次都以相同的方式应用,因此它根本不会增加任何真正的熵——知道该规则的攻击者不会因不知道哪些字母大写而获得任何好处,而且该工具说得很清楚。相比之下,附加一个随机的两位数字是对 100 个同样可能的值进行真正的额外随机抽取,在单词顶部添加一个实数和规定的约 6.6 位。所有内容都在您的浏览器中本地计算和呈现,不涉及服务器,因此除了您之外的任何人都不会看到您生成的密码。