词表分析器
分析 diceware 或密码词表:不重复单词数、重复项、长度统计、每个单词的熵、达到 60–128 比特所需的单词数以及前缀检查。
空行和首尾空格会被忽略。
每个单词的熵为 log2(不重复单词数),前提是每个单词都被均匀随机选取(例如掷骰子)。唯一前缀长度是能唯一识别每个单词的最少开头字母数。
完全在浏览器中运行,您的数据不会被上传。
什么是 词表分析器?
粘贴一份词表(每行一个单词),检查它是否适合用于口令:有多少个不重复单词、重复项、单词长度、每个单词的熵、达到目标强度需要多少个单词,以及单词能否在不加分隔符的情况下连接。
如何使用 词表分析器
- 把列表粘贴到词表(每行一个单词)中,或点击加载 EFF 大词表。
- 查看统计:总数、不重复数、重复数、每个单词的熵和长度统计。
- 查看前缀结果以及达到 60、80 和 128 比特所需的单词数。
- 点击下载去重后的词表保存清理后的列表。
示例
EFF large wordlist (7,776 words)
Unique 7,776, entropy per word 12.9 bits, 5 words for 60 bits, 7 for 80 bits, 10 for 128 bits; prefix-free
EFF 大词表有 7,776 个单词,每个单词约 12.9 比特。
何时使用 词表分析器
适用于构建或审查自定义 diceware 列表(例如其他语言的),或清理用于游戏和工具的词表。只有在单词是均匀随机选取的情况下,熵的数值才成立。
词表分析器 的工作原理
每一行都会去掉首尾空白,空行被忽略。每个单词的熵 = log2(不重复单词数),所需单词数 = ceil(比特数 ÷ 每个单词的熵)。如果没有任何单词是另一个单词的开头,则该列表是无前缀的(在排序后的列表上检查);唯一前缀长度是使每个单词的前 k 个字符各不相同的最小 k。重复项会被统计并列出;清理后的列表保留每个单词第一次出现的位置。
常见用例
- 验证翻译后的 diceware 词表
- 检查口令中的单词能否安全地连接
- 从单词列表中删除重复项
- 比较 EFF 大词表和短词表
常见问题
为什么无前缀很重要?
如果 'app' 和 'apple' 都在列表中,那么 'apple' + 'ton' 与 'app' + 'leton' 可能产生相同的连接字符串,在不使用分隔符时会降低熵。
口令词表应该多大?
7,776 个单词(6^5)是五个骰子的标准,每个单词 12.9 比特;较小的列表则需要更多单词才能组成口令。
列表会被上传吗?
不会。分析完全在你的浏览器中运行。