强密码生成器 + 强度检测
4 生成模式 · 熵值计算 · 破解时长估算 · XKCD 单词组合 · NIST SP800-63 标准
词组式/易记/助记
4 生成模式 · 熵值计算 · 破解时长估算 · XKCD 单词组合 · NIST SP800-63 标准
· 密码熵:衡量不可预测程度 / 熵 = log₂(字符集^长度) 单位 bit
· NIST SP800-63 分级:< 28 极弱 · 28-35 弱 · 36-59 中 · 60-127 强 · ≥ 128 极强
· XKCD 单词法:4 个常用词组合(correct-horse-battery-staple)熵 ≈ 44 bit,比"P@ssw0rd1!"更强且易记 · xkcd #936 漫画建议
· 实战:日常用 16+ 位随机(密码管理器存)/ 记忆用 XKCD 5-6 词
了解工具定位 · 使用场景 · 对比优势
生成由随机单词组成的强密码,比字母数字组合更易记、更难破。适合需要管理多个账号密码的普通用户、IT 运维、以及想摆脱密码管理器的人。只需选择单词数量和分隔符,点击即生成。所有计算在浏览器内完成,密码不离开你的设备。
日常使用 20+ 网站/App 的用户,每个平台都设不同密码,记忆负担极重。本工具生成「词组式」密码(如 CatRunBlue$2024),由 3-4 个常见单词加符号数字组成,既满足复杂密码要求,又靠语义联想轻松记住,无需密码管理器。
IT 管理员每季度要求全员更换办公系统密码,员工常因记不住新密码而写纸条贴屏幕。本工具生成「助记型」密码,员工根据词组含义(如 GreenSky*7Fox)自然回忆,降低重置工单量,同时满足企业密码复杂度策略。
大学生拥有教务系统、图书馆、校园网、邮箱等多个账号,常用生日或学号做密码,极易被撞库。本工具生成「易记强密码」,学生只需记住一个核心词组(如 HappySun#88),就能为每个平台派生不同密码,抵御批量登录攻击。
自由设计师/开发者管理多个客户的项目管理系统、代码仓库、云服务器,每个系统密码不同。本工具生成「场景化词组」(如 BlueOcean$Dev),每个客户用不同主题词组,通过业务关联记忆,避免密码混用导致跨系统泄露风险。
家庭共享视频会员、云存储等账号,多人使用同一密码,一旦泄露全家受影响。本工具生成「口语化词组」密码(如 FamilyFun*2024),全家人凭日常用语轻松记住,同时密码强度高,防止被社工库匹配破解。
| 维度 | 本工具 | 竞品 A (LastPass) | 传统方法 (手写/记忆) |
|---|---|---|---|
| 数据隐私 | 纯浏览器,零上传 | 密码库上传至云端服务器 | 完全离线,无电子记录 |
| 生成速度 | 即时,1 秒内 | 需登录后操作,约 2-3 秒 | 手工构思,数分钟至数小时 |
| 离线可用 | 完全离线,断网可用 | 需联网同步密码库 | 完全离线 |
| 密码格式 | 词组式,易读易记 | 随机乱码,需依赖管理器 | 词组式或简单模式 |
| 注册要求 | 无需注册,打开即用 | 必须注册账号 | 无需注册 |
| 平台依赖 | 任何现代浏览器 | 需安装插件或客户端 | 无需任何工具 |
| 助记性 | 强,词组关联自然记忆 | 弱,需复制粘贴 | 强,依赖个人联想 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| 4个随机单词,用连字符连接 | correct-horse-battery-staple | 典型场景:XKCD 经典词组式密码,易记且强 |
| 2个随机单词+2位数字+1个特殊字符 | blue-sky-42! | 常见用法:混合词组与符号,满足多数网站复杂度要求 |
| 1个单词(太短) | 弱密码:仅1个单词,建议至少4个词 | 边界 case:词组数少于推荐最小值,工具提示风险 |
| 10个随机单词(过长) | strong-rain-jump-fox-lamp-desk-tree-milk-star-cake | 边界 case:超长词组仍可生成,但部分网站限制密码长度 |
| 包含生僻词(如“蕨类植物”) | 蕨类植物-灯塔-云-椅子 | 易错 case:用户误以为生僻词更安全,实际记忆成本高 |
| 全部大写单词 | APPLE-BOOK-CAR-DOOR | 易错 case:大写词组降低可读性,工具默认小写输出 |
| 重复单词(如“cat-cat-cat-cat”) | 弱密码:重复模式易被字典攻击破解 | 边界 case:工具检测并警告重复词组,拒绝生成 |
wo-xiang-qu-gong-yuan-wangong-yuan-wan-shua词组式密码的核心是3-5个独立词组合,不是完整句子。完整句子太长且容易被上下文推断,违背了‘易记但难猜’的设计初衷。
wo-ai-niai-xiang-jiao-shui-guo‘wo-ai-ni’‘wo-xi-huan-ni’等是高频短语,属于字典攻击的常见目标。应选择非固定、非情感化的具体名词组合。
ping-guo-xiang-jiao-cao-meiping-guo-xiang-jiao-dian-nao全部是水果类词,攻击者一旦猜到类别,爆破空间大幅缩小。混合不同类别(水果+电器+地点)能指数级增加组合数。
zhang-san-de-shou-jihuo-che-shan-dian-fei-ji姓名、生日、手机号、公司名等一旦泄露(社工库),密码等于白送。词组式密码的优势就是完全随机、无个人关联。
da-xiangda-xiang-ji-qi-ren2个词的组合空间太小(约10^4量级),暴力破解可在秒级完成。至少3个词,推荐4-5个词才能达到安全阈值。
zhe-zhi-qi-qiaozhe-zhi-qi-che词组式密码的核心优势是‘易记’。如果用户记不住或总打错字,就会被迫记在纸上或频繁重置,反而降低安全性。
da-xiang-ji-qi-renDa-Xiang-Ji-Qi-Ren-2024!虽然词组式密码本身已很强,但很多网站强制要求大小写、数字、特殊字符。在词组首字母大写+末尾加年份和符号,能兼容规则而不破坏可记性。
同一组词用于邮箱、银行、论坛每个重要网站使用不同的词组组合词组式密码再强,只要一个网站泄露(撞库),所有使用相同密码的账户都会失守。不同网站用不同词组,是密码管理的底线。
公式推导 · 流程图解 · 依据出处
H = N × log₂(L)
H — 密码熵值(bit),衡量破解难度N — 密码包含的字符总数(长度)L — 字符池大小(可选字符的种类数)生成一个 4 词组密码,从 7776 词库中随机选 4 个词,每个词用分隔符连接。字符池 L = 7776(词库大小),密码长度 N = 4(词组数)。H = 4 × log₂(7776) ≈ 4 × 12.92 ≈ 51.7 bit。51.7 bit 的熵值意味着暴力破解需要尝试 2^51.7 ≈ 3.5 × 10^15 次,远超 8 位大小写字母+数字密码(H = 8 × log₂(62) ≈ 47.6 bit)。
适用于 Diceware 词组式密码(词库大小固定为 7776 词)。不适用于随机字符密码(需改用字符级熵公式 H = N × log₂(L) 其中 L 为字符集大小)。公式基于 Claude Shannon 信息熵理论(1948 Bell System Technical Journal)。
3 种主流语言 · 复制即用
import secrets
import string
# 从单词列表随机组合,生成易记密码
words = ["sun", "tree", "blue", "fish", "door", "star"]
separator = "-"
count = 4
# 随机选词,首字母大写增强可读性
chosen = [secrets.choice(words).capitalize() for _ in range(count)]
password = separator.join(chosen)
print(password) # 示例: Sun-Fish-Door-Star
# 可选:末尾追加一位数字/符号
password += str(secrets.randbelow(10))
print(password) # 示例: Sun-Fish-Door-Star7package main
import (
"fmt"
"math/rand"
"strings"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
words := []string{"sun", "tree", "blue", "fish", "door", "star"}
separator := "-"
count := 4
var parts []string
for i := 0; i < count; i++ {
w := words[rand.Intn(len(words))]
// 首字母大写
parts = append(parts, strings.Title(w))
}
password := strings.Join(parts, separator)
fmt.Println(password) // 示例: Sun-Fish-Door-Star
// 可选:末尾追加一位数字
password += fmt.Sprintf("%d", rand.Intn(10))
fmt.Println(password) // 示例: Sun-Fish-Door-Star7
}const crypto = require('crypto');
// 从单词列表随机组合,生成易记密码
const words = ['sun', 'tree', 'blue', 'fish', 'door', 'star'];
const separator = '-';
const count = 4;
// 安全随机选词
function securePick(arr) {
const idx = crypto.randomInt(0, arr.length);
return arr[idx];
}
const chosen = Array.from({ length: count }, () => {
const w = securePick(words);
return w.charAt(0).toUpperCase() + w.slice(1);
});
let password = chosen.join(separator);
console.log(password); // 示例: Sun-Fish-Door-Star
// 可选:末尾追加一位数字
password += crypto.randomInt(0, 10);
console.log(password); // 示例: Sun-Fish-Door-Star78 个高频疑问