-
离线 GPU 平均破解时间 ≈ 10^11 years
功能说明
使用 Web Crypto CSPRNG(crypto.getRandomValues)配合**拒绝采样(rejection sampling)**生成密码学安全的随机密码,因此每个字符都从你选定的字符集中均匀抽取 —— 没有取模偏差,没有可预测的捷径。每次抽取相互独立,且完全在你的浏览器中完成。
工具为每个密码实时显示熵(位数)(length × log₂(charset)),并将其归入五个等级之一 —— very weak(非常弱)、weak(弱)、fair(一般)、strong(强)、very strong(非常强) —— 显示在一个 5 段强度计上。强度计下方是标题数字:针对离线 GPU 攻击(每秒 10¹⁰ 次猜测)的平均破解时间,按 2^(bits−1) / rate 计算 —— 即期望时间,也就是一半的密钥空间。
打开 Pro 开关即可揭示分析层:拆解开的熵公式(length × log₂(charset) = N bits)、为离线 GPU 场景绘制的“破解时间 vs 长度”曲线,以及一张四行的攻击场景表,从在线限速(100 次/小时)一直到离线高速 GPU(10¹⁰ 次/秒)。
使用方法
- 用滑块设置长度(4–64 个字符;刻度在 8、16、24、32、48、64)。
- 勾选你想要的字符集:
A-Z、a-z、0-9、!@#(符号)。至少开启一个。 - 可选开启 no O0Il1,从字符池中剔除视觉上易混淆的字符(
O、0、I、l、1)。 - 点 New 重新抽取,或点 Copy 复制当前密码。
- 读取强度计及其下方的平均离线 GPU 破解时间。
- 打开 Pro 查看熵公式、“破解时间 vs 长度”曲线和 4 场景攻击表。
示例
熵为 length × log₂(charset)。四个字符集共计 88 个字符(26 小写 + 26 大写 + 10 数字 + 26 符号)。
- 16 个字符,A-Z + a-z + 0-9(字符集 62):
16 × log₂(62) ≈ 95.3 bits→ strong(强)(5 段中的 4 段)。平均离线 GPU 破解时间 ≈2^94 / 10¹⁰ ≈ 1.98 × 10¹⁸ s ≈ 6.3 × 10¹⁰ 年—— 工具显示为10^11 years。 - 16 个字符,全部四组含符号(字符集 88):
16 × log₂(88) ≈ 103.4 bits→ very strong(非常强)(5 段中的 5 段)。 - 8 个字符,仅小写(字符集 26):
8 × log₂(26) ≈ 37.6 bits→ weak(弱)(5 段中的 2 段)。 - 95 位时的 Pro 场景对比(平均时间,
2^94 / rate):在线限速(100 次/小时)→10^22 years;在线无限速(10 次/秒)→10^20 years;离线慢哈希(10⁴ 次/秒)→10^17 years;离线高速 GPU(10¹⁰ 次/秒)→10^11 years。
补充说明
- 设计上即私密: 生成过程在本地使用
crypto.getRandomValues—— 密码绝不会离开你的浏览器,Pro 模式是纯数学计算(无网络请求)。 - 无取模偏差: 每个字符索引都用拒绝采样抽取(以字符集大小在 2³² Uint32 范围内的最大整数倍为接受界限,然后再归约)—— 绝不使用
random % charset.length。 - 是平均值,不是最坏情况: 破解时间是期望时间(
2^(bits−1) / rate—— 一半密钥空间)。运气好的攻击者可能更早完成;完整扫一遍密钥空间大约要花两倍时间。 - 理论熵: 评分假设均匀随机抽取,而这正是 CSPRNG 所保证的。对于人为选择或复用的密码,请使用 Password Strength Analyser(zxcvbn)—— 它能抓住原始熵无法发现的字典词、替换和模式。
- 五个等级: very weak(< 28 位)、weak(28–44)、fair(45–69)、strong(70–99)、very strong(≥ 100)。
- 可分享: 长度、字符集开关、
no O0Il1标志和 Pro 开关都编码进 URL(?len=…&upper=1&pro=1…),因此一个链接就能重现确切的配置。 - 相关工具: Password Strength Analyser、Token Generator。