Menu

密码生成器

生成高强度随机密码,可调整字符类型。

作者 Nethanel Bar, Co-founder & CEO

最后更新

准备好真正学会编程了吗?

Coddy 让你在浏览器里编写真实代码来学习:互动课程、即时反馈,卡住时还有 AI 帮忙。

密码生成器是什么?

密码生成器会生成随机密码,比人自己想出来的密码难猜得多。开发者和学习者会用它来创建测试账号、管理后台、数据库凭据、各种控制台的注册账号和 CI 密钥,也会用它来练习个人安全习惯。

核心概念是熵,也就是密码有多不可预测。更长、更不可预测的密码要强得多,哪怕在人眼里两者看起来都一样随机。每个账号使用一个独立的密码,并保存在可信的密码管理器中,就能消除重复使用密码带来的大部分风险。

真正的密码生成器应该从安全的随机源获取随机数:浏览器中的 window.crypto.getRandomValues、Python 中的 secrets、Node.js 中的 crypto.randomBytes。任何基于 Math.random() 或简单时间种子随机数生成器的方案,都可预测到足以被攻击的程度。

生成密码的过程中你会学到什么

  • 长度通常比耍小聪明的替换(比如用 @ 代替 a)更重要:20 个字符的全小写密码比 10 个字符带符号的密码更强。
  • 随机数必须来自密码学安全的随机源,比如 window.crypto,而不是 Math.random()。
  • 每个账号使用独立的密码,可以在某个网站或数据库被攻破时把损失控制在最小范围。
  • 一个较长的随机密码短语(四到六个互不相关的单词)可以和 20 个字符的随机字符串一样强,而且更容易输入或念出来。

如何一步步生成强密码

  1. 选择长度

    重要账号至少 16 个字符,管理员或 root 凭据 20 个以上。增加长度比其他任何调整都有效。

  2. 选择字符类型

    同时启用小写字母、大写字母、数字和符号,效果最强。如果你需要口头报出密码,或者在不同系统之间复制它,可以关闭符号。

  3. 排除易混淆字符(可选)

    如果密码可能需要念出来或手动输入,打开这个选项来跳过 O / 0 和 l / 1 / I。

  4. 生成并查看强度指示

    强度指示会估算暴力破解这个密码需要多长时间。只要落在最强的区间,用于个人账号就没问题。

  5. 保存到密码管理器

    把密码复制到可信的密码管理器里,千万不要粘贴到聊天、邮件或便利贴上。也不要在其他账号上重复使用它。

密码强度速查表

按每秒 100 亿次猜测(现代离线破解的水平)估算的大致暴力破解时间。选择长度时可以作为粗略参考。权威指南:NIST SP 800-63B 和 OWASP Authentication Cheat Sheet。

长度字符集大致强度
8小写字母 + 数字(36 个字符)几秒内被破解
10小写字母 + 大写字母 + 数字(62)几小时内被破解
12小写字母 + 大写字母 + 数字 + 符号(94)几天到几周
16小写字母 + 大写字母 + 数字 + 符号几个世纪
20小写字母 + 大写字母 + 数字 + 符号以目前的技术几乎无法破解
4 个单词随机单词组成的密码短语(correct horse battery staple)几个世纪,而且更容易记住

可以试试的密码示例

普通账号的强默认设置

设置

长度:20 · 小写字母:开 · 大写字母:开 · 数字:开 · 符号:开

示例输出

B7$kP2wM!hG9eV4rT&xQ

适用于控制台、Web 应用和大多数个人账号的实用默认设置。包含全部四类字符的 20 个字符密码,目前被认为几乎无法破解。

只比较长度

8 个字符(弱)

f7Bk2pQz

24 个字符(强)

f7Bk2pQzM!eV9rT&hG3wXn$L

较短的密码使用相同的字符类型,但强度要弱好多个数量级。长度几乎总是赢家。

易读的密码短语

密码短语

lantern-vivid-comet-nimbus-quartz

五个互不相关的随机单词,强度大致相当于 16 个字符的随机密码,但输入、念出和记忆都容易得多。

密码的常见错误

  • 在多个账号上重复使用同一个生成的密码:一个网站泄露,所有账号都会跟着沦陷。
  • 因为带了符号就选了一个短密码,以为光靠符号就够强。长度才是更大的杠杆。
  • 把生产环境的凭据写在源代码、截图、聊天消息或课程笔记里。请使用环境变量和密钥管理工具。
  • 在自己的代码里用 Math.random() 或简单的时间种子随机数生成器来生成密码。一定要使用平台提供的加密 API。
  • 把密码写在便利贴上,而不是使用密码管理器。便利贴就是最薄弱的环节。

密码生成器常见问题

怎么生成一个强密码?

使用密码生成器,选择至少 16 个字符的长度,并启用全部四类字符(小写字母、大写字母、数字、符号)。把结果直接保存到密码管理器里,不要靠记忆或手动输入。

什么样的密码才算强?

足够长、足够随机、独一无二。由安全随机数生成器生成、只用于一个账号的长随机密码,就是黄金标准。

每个账号都应该用密码生成器吗?

是的。生成的独立密码保存在可信的密码管理器中,是抵御撞库攻击最简单也最有效的方法。

强密码一定要包含符号吗?
符号有帮助,但长度和随机性更重要。一个较长的随机密码短语(tower-citrus-bronze-quay-pear)可以和较短但符号很多的密码一样强,而且更好用。
这个密码生成器安全吗?
安全。Coddy 的生成器完全在你的浏览器中运行,使用 window.crypto.getRandomValues。密码在本地生成,绝不会发送到服务器。
可以在自己的代码里使用生成的密码吗?

请使用环境变量、密钥管理工具或加密保险库来存放。不要把真实凭据硬编码在源文件里,即使是私有仓库也不行。

了解更多

其他开发者工具

Coddy 编程语言插图

和 Coddy 一起学编程

开始