密码学安全随机密码生成器

基于 Web Crypto 安全随机源生成高熵随机密码、Diceware 助记词组短语与纯数字 PIN,实时评估香农信息熵与防破解强度。

设置密码时最常见的问题,要么是用了与个人信息相关的弱口令,要么是用普通伪随机数生成的所谓“复杂密码”,字符短且难记,在现代 GPU 暴力破解算力面前不堪一击。更糟糕的是,许多第三方密码生成工具把生成的密码回传服务器,埋下严重泄密风险。

本工具从第一性原理出发,严格使用浏览器底层密码学安全伪随机数生成器(CSPRNG: crypto.getRandomValues),并利用拒绝采样消除取模偏差,确保字符概率分布完全均匀。提供自定义字符池、Diceware 助记短语、银行级数字 PIN 与可读拼音发音口令等多种模式,实时测算香农信息熵(Bits)并估算现代算力下的防破解年限。

信息熵:密码强度的第一性物理度量

密码对抗暴力破解的本质是状态空间的大小。根据香农信息论,信息熵 H = L × log2(N),其中 L 是长度,N 是候选字符池大小。例如 8 位包含大小写和数字的密码,熵值仅为 8 × log2(62) ≈ 47.6 bits,现代 GPU 集群在几小时内就能穷举;而一个 4 个常见单词构成的助记短语密码(如 correct-horse-battery-staple),熵值超过 52 bits,不仅极易记忆,而且抗暴力破解能力远超短密码。

为什么“短而复杂”不如“长而简单”的助记词组

人脑极难记住诸如 Tr0ub4dor&3 这样的高复杂度短密码,迫使人们写在便签或重复使用,反而降低了整体安全性。Diceware 算法通过将常见字典单词串联,利用了长度增长对熵值的指数级倍增效应(每增加一个单词状态空间扩大数千倍)。对于需要日常手动输入的账户主密码,多词助记短语是兼顾易记性与极高强度的最佳方案。

CSPRNG 与拒绝采样:杜绝伪随机数陷阱与取模偏差

普通 JavaScript 的 Math.random() 采用的是 xorshift128+ 等非密码学算法,内部状态容易被反推预测,绝对不能用于生成密码。本工具统一调用操作系统的安全熵池(crypto.getRandomValues)。此外,当字符池大小 N 不能整除随机整数范围时,直接取模(% N)会导致前面部分字符出现的概率略微偏高,本工具通过严格的拒绝采样丢弃处于余数偏差区间的随机数,保证绝对均匀分布。

防偷窥与批量生成的人性化设计

在公共办公环境或屏幕共享时,明文密码极易被旁边的人或投屏录制捕捉。本工具默认提供一键遮蔽开关,用圆点隐藏字符;支持一次性批量生成多条密码并一键复制,方便运维人员批量初始化测试账号或数据库密码,且全流程在本地内存完成,断网可正常使用。

广告

常见问题

为什么用 Math.random() 生成密码是不安全的?
Math.random() 是为游戏和模拟等性能敏感场景设计的伪随机数生成器,其内部算法(如 V8 的 xorshift128+)周期有限且无抗逆向设计,攻击者通过观察连续输出的几个数字就能推导出生成器的内部状态,从而预测接下来生成的所有密码。必须使用浏览器提供的 crypto.getRandomValues()。
8 位大小写加符号密码与 4 词助记短语哪个更安全?
4 词助记短语更安全得多。8 位包含全部符号的密码组合数约为 94^8 ≈ 6×10^15(约 52 bits 熵),在多卡 GPU 离线破解下只要几天甚至几小时;而 4 个从数千常用词表中抽取的单词组合数超过 (2000)^4 = 1.6×10^13,若再加上大小写与分隔符,熵值远高于短密码,且人脑能在几秒内轻松背诵。
生成的密码会被上传或缓存在服务器上吗?
绝不上传。本站是纯静态前端工具,没有后端数据接口,密码生成的全部算法(CSPRNG、Fisher-Yates 洗牌、信息熵评估)全部运行在你的本地浏览器内存中,页面刷新后内存即刻释放,绝无任何远程存储风险。
什么是取模偏差(Modulo Bias)?
当计算机生成一个 0 到 255 的随机字节并试图映射到长度为 62(数字+大小写)的字符集时,256 / 62 = 4 余 8。如果直接用 byte % 62,前 8 个字符(0 到 7)被选中的概率会比其他字符高出 25%!这种统计学偏差会被攻击者利用来优化爆破字典。消除偏差的方法是拒绝采样:一旦随机数处于 248 到 255 之间就丢弃并重新抽取。

相关工具

广告