# 密码生成器

URL: https://discuvr.org/password-generator/?hl=zh-hans
Last updated: 2026-11-08
MCP tool: `generate_password`

使用密码学安全的随机性生成强随机密码。选择长度和字符类型，并以比特熵查看其强度。

强密码是攻击者无法猜中也无法预测的密码，因此它必须来自同样无法预测的来源。本工具使用 Python 的密码学随机数生成器生成密码，而不是大多数编程语言内置的那种更快但可预测的生成器，并准确显示破解它需要多少猜测工作量。

## 功能说明

- 每个字符和最后的打乱步骤都使用 Python 的密码学安全随机源，绝不使用可预测的随机数生成器。
- 长度可选 4 到 128 个字符，大写字母、小写字母、数字和符号可任意组合。
- 保证每种所选类型至少出现一个字符，密码绝不会悄悄漏掉你要求的类型。
- 显示以比特计的熵（长度乘以字符集大小的 log2）和通俗的强度等级，两者都来自固定公式，而不是估计。
- 每次请求都重新生成并立即返回，从不写入磁盘、数据库、缓存或日志。

## 工作原理

1. 设置长度并选择要包含的字符类型。
2. 点击「生成」按钮。
3. 复制密码；想要另一个随时重新生成。

## 为什么不用普通的随机数生成器

Python 常用的 random 模块是梅森旋转算法（Mersenne Twister）：速度快，非常适合模拟，但只要拿到它连续 624 个 32 位输出，就能还原其全部内部状态，此后它产生的每个数都可以预测。本工具改为通过 Python 的 secrets 模块使用操作系统自带的密码学随机源，Python 官方文档推荐用它生成密码和安全令牌。包括打乱字符顺序在内的每一个随机决定都使用它。

## 熵值是什么意思

以比特计的熵等于密码长度乘以每个位置可能出现的不同字符数的以 2 为底的对数。例如，一个由全部四种类型（26 个大写字母、26 个小写字母、10 个数字和 26 个符号，共 88 个字符）组成的 16 位密码约有 103 比特熵。每多一比特，攻击者要尝试的密码数量就翻一倍；该字符集每多一个字符约增加 6.5 比特，所以多四个字符会让猜测工作量增加约 6000 万倍。显示的强度等级（弱、一般、强、非常强）来自固定的比特阈值，而不是主观判断。

## 密码应该多长？NIST 怎么说

NIST SP 800-63B-4（2025）第 3.1.1.2 节要求：单独用于登录的密码至少 15 个字符；仅作为多因素登录的一部分时至少 8 个字符。网站还必须接受至少 64 个字符的密码，且不得强制混用字符类型或定期更换密码。强度来自长度：20 个小写字母有 94 位熵，高于由四类字符组成的 12 个字符（77.5 位）。如果网站限制长度或不接受符号，请选择它允许的最大长度，并取消勾选"符号"。

## 使用哪些符号，以及外形相似的字符

"符号"选项从以下 26 个字符中选取：! @ # $ & * ( ) - _ = + [ ] { } ; : , . < > ? / ~ ^。不包含空格、反斜杠、引号、反引号、% 和 |，因为一些旧系统会拒绝或损坏这些字符。外形相似的字符（如 0 和 O，或 l、1 和 I）不会被剔除，因此请复制粘贴密码，不要手动重新输入。显示的位数假设密码保密且唯一：在多个网站重复使用或保存在共享文件中的密码，实际强度低于该数字。

## 问题

**我生成的密码会被保存或记录吗？**

不会。密码在同一次请求中生成并返回，从不写入磁盘、数据库、缓存或日志。

**为什么我的密码没有包含我选择的所有字符类型？**

只要所选长度不少于所选类型的数量，就一定会包含：每种所选类型的一个字符是有保证的，不靠运气。

**强度等级是什么意思？**

它反映以比特计的熵：低于 40 为弱，40 到 59 为一般，60 到 79 为强，80 及以上为非常强。这些阈值是固定的，不是模型的判断。

**为什么不用我自己想的一句话？**

自己想的密码依赖你的记忆和习惯中的规律，而这正是它容易被猜中的原因。来自密码学随机源的密码没有任何可猜的规律。

**要达到「强」或「非常强」需要多少个字符？**

这取决于你勾选了哪些字符类型，因为每增加一种类型，字符集就更大。勾选全部四种类型时（88 个字符，每个约 6.46 比特），10 个字符达到「强」，13 个字符达到「非常强」。只用字母和数字、不用符号时（62 个字符）需要 11 和 14 个；只用小写字母时（26 个）需要 13 和 18 个；只用数字时（10 个）需要 19 和 25 个。默认设置是四种类型共 16 个字符，约 103.4 比特。包含所有类型的 8 位密码只有约 51.7 比特，属于「一般」。

**能生成随机 PIN 码或数字验证码吗？**

可以。除 数字 (0-9) 外取消勾选其他所有类型，并把长度设为 4 或以上。每个位置上每个数字出现的概率相同，包括开头的 0，所以可能出现 0472 甚至 1111；如果银行或门禁系统不接受重复或连续的数字，再点一次 生成 即可。强度会显示为 弱：4 位 PIN 约 13.3 比特（10,000 种可能），6 位约 19.9 比特（1,000,000 种）。这对 PIN 来说很正常，因为它只有在银行卡、手机或门锁输错几次就阻止继续尝试的场合才安全。凡是可能被离线猜测的场合，请改用完整的密码。

**生成的密码能满足公司的密码策略或用作 Wi-Fi 密码吗？**

对常见的办公规则来说可以。像"至少 12 个字符，包含大写字母、小写字母、数字和符号"这样的策略，只要勾选全部四种类型并把长度设为 12 或以上，每次都能满足，因为每种勾选的类型都保证至少出现一个字符。本工具无法遵守允许符号清单、禁止重复或连续字符、或不得包含姓名之类的规则；如果系统拒绝结果，再点一次生成即可。如果系统不接受符号，取消勾选符号（例如 !@#&*）并多加 2 个字符：14 个字母和数字有 83.4 比特，高于四种类型的 12 个字符（77.5 比特）。WPA2-Personal 的 Wi-Fi 密码必须是 8 到 63 个可打印 ASCII 字符（IEEE 802.11i-2004，Annex H.4.1；Microsoft MS-TCC 第 2.2.2.9 节）。本工具生成的全部是可打印 ASCII，所以 8 到 63 之间的任何长度都可以；20 个字母和数字（约 119.1 比特）在电视或打印机上也容易输入。

**密码需要每 90 天更换一次吗?**

不需要按固定周期更换。NIST SP 800-63B-4 (2025) 第 3.1.1.2 节规定,验证方不得要求用户定期更改密码,但在有证据表明密码已泄露时必须强制更改。强制更换往往导致容易猜到的改动,例如把 Winter2026! 改成 Spring2026!。在收到数据泄露通知、点击了钓鱼链接或把密码告诉过别人之后,请立即更改,然后在这里生成一个新密码并保存在密码管理器中,不要在其他网站重复使用。

## 更多日常助手

- [字数统计与可读性分析工具](https://discuvr.org/word-counter/?hl=zh-hans)
- [年龄/日期差计算器](https://discuvr.org/age-calculator/?hl=zh-hans)
- [日期差计算器](https://discuvr.org/date-difference/?hl=zh-hans)
- [百分比计算器](https://discuvr.org/percentage-calculator/?hl=zh-hans)

## 常一起使用

- [网站安全扫描](https://discuvr.org/security-scan/?hl=zh-hans)
- [编码 / 解码](https://discuvr.org/encode-decode/?hl=zh-hans)

---

Part of Discuvr (https://discuvr.org/): Discuvr is a collection of free, focused tools for day-to-day professional work - office and data utilities, legal and compliance helpers, privacy and security checks, and developer formatters. Every tool has its own page, and most can also be called from ChatGPT or Claude over MCP.
