Tarayıcınız güncel değil

Bu siteyi görüntülemek için tarayıcınızın veya cihazınızın işletim sisteminin güncellenmesi gerekiyor.

Your browser is out of date. Please update iOS or your browser to view this site.

跳转到主要内容
Gizke.com
博客

密码生成器

在你的设备上运行,不会发送任何内容。

 

强度

非常强
103.4 位熵预计破解时间: 2051亿 个世纪

在浏览器本地生成强随机密码和易记的密码短语,并实时显示熵值与破解时间估算。

密码的真正强度来自其熵值 - 即攻击者在猜中您的密码之前需要尝试的可能密码数量 - 这既取决于长度,也取决于每个位置可能出现的不同字符数量。此工具通过 Web Crypto API(而非 Math.random())生成密码学意义上真正随机的密码,或基于单词的密码短语,并为您生成的内容显示实际熵值和大致的破解时间估算,让这些权衡清晰可见,而不是隐藏在一个含糊的强或弱标签背后。没有任何内容在服务器上生成或被发送到任何地方。

常见问题

我应该使用随机密码还是密码短语?
两者都是合理的选择,2024 年 NIST 数字身份指南明确倾向于优先考虑长度而非强制性的复杂度规则。随机密码每个字符携带更多熵值,非常适合由密码管理器为您记住的场景。密码短语——将若干个随机单词串联起来——用每字符略少的熵值换取了人类真正能够记住并输入的内容,这对主密码或任何需要凭记忆输入的内容都很重要。
熵位数到底意味着什么?
每增加一位熵,攻击者需要尝试穷举所有可能性的次数就会翻倍。熵值为 40 位的密码大约有一万亿种可能组合;熵值为 80 位的密码大约有一万亿的一万亿倍种组合。安全指南通常认为,对于无法通过限速或锁定来保护的内容(例如加密密钥或密码管理器的主密码),80 位以上的熵值是优秀的水平。
破解时间估算是如何计算的?
它假设攻击者可以离线访问密码哈希,并以每秒约 100 亿次的速度进行尝试——这大致代表了一个现代 GPU 集群的算力。它旨在传达一个数量级,而非精确预测:实际破解时间在很大程度上取决于目标系统所使用的哈希算法,而此工具无从得知这一点。
为什么要排除 l、1、I、O、0 等易混淆字符?
这些字符在朗读、手写或以某些字体显示时很容易被混淆。排除它们会以少量熵值为代价,换取一个在从屏幕或纸张上抄写时更不容易出错的密码——这对于需要手动输入而非从管理器中粘贴的密码很有用。
随机生成器会不会偏向某些字符而不是其他字符?
不会 - 它在 crypto.getRandomValues() 之上使用拒绝抽样(rejection sampling),而不是简单的取模运算。如果取一个随机字节并计算 byte % 池大小,那么每当池大小不能整除 256 时,靠近池开头的字符就会获得极其轻微的优势;因此生成器会丢弃任何超出范围的值,并重新抽取,直到结果落在能整除的范围内。结果就是,无论你启用了多少种字符类型,每个字符被选中的概率都完全相同。
为什么随机生成的密码总会包含我启用的每种字符类型中至少一个?
在构建字符池之后,生成器会先从你启用的每个类别(大写字母、小写字母、数字、符号)中预留一个字符,然后再用完整字符池填充其余长度,最后将所有字符随机打乱顺序。这保证了你的密码不会意外地全部由字母组成而没有数字 - 这一点很重要,因为许多网站会拒绝缺少某种必需字符类型的密码,即使字符池里本来就包含了它。打乱这一步使用的是同样无偏的随机选择,因此被保证包含的字符不会出现在可预测的位置。

分享此工具

博客关于联系我们使用条款隐私政策