密码策略生成器

把密码规则转换为易读的策略、验证正则、带 pattern 和 passwordrules 的 HTML 输入框以及 JSON 配置。含 NIST 和 PCI 预设。

0 = 不限最大长度

在大写、小写、数字、符号四类中(0 = 关闭)。

0 = 关闭

0 = 关闭

传统的复杂度规则。现代指南(NIST、OWASP)建议改用长度要求和黑名单,因为这些规则会促使人们使用 "Password1!" 这类可预测的模式。

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,64}$
minlength: 8; maxlength: 64; required: upper; required: lower; required: digit; required: special; allowed: ascii-printable;

务必同时在服务器端执行该策略。正则按 UTF-16 码元计数,“符号”指 A–Z、a–z、0–9 以外的任何字符。

什么是 密码策略生成器?

只需定义一次密码要求,就能得到你需要的所有格式:给用户看的易读策略文本、用于验证的正则表达式、带有 pattern 和 Apple passwordrules 属性的现成 HTML 密码输入框,以及 JSON 配置。

如何使用 密码策略生成器

  1. 从策略预设开始,或自行设置规则。
  2. 复制策略文本,用于你的文档或注册页面。
  3. 复制正则表达式或 HTML 输入框,用于客户端验证。
  4. 把 JSON 输出用作后端的配置。

示例

输入
Classic preset: 8–64 characters, upper, lower, digit, symbol
输出
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,64}$
passwordrules: minlength: 8; maxlength: 64; required: upper; required: lower; required: digit; required: special; allowed: ascii-printable;

经典预设:8–64 个字符,包含大写、小写、数字和符号。

何时使用 密码策略生成器

适用于实现或记录密码策略。务必在服务器上也执行同样的规则;客户端正则只用于给用户提供反馈。

密码策略生成器 的工作原理

必需的字符类型会变成 (?=.*[A-Z]) 这样的前瞻断言;“4 个类别中至少 N 个”变成所有 N 个前瞻组合的分支;“连续相同字符不超过 N 个”变成 (?!.*(.)\1{N});长度变成 .{min,max}(不允许空格时为 \S)。passwordrules 的值遵循 Apple 的密码规则语法(minlength、maxlength、required、allowed、max-consecutive)。正则无法表达的规则(不重复字符、黑名单、用户名)会单独列出。

常见用例

  • 为注册表单生成验证正则
  • 添加 passwordrules,让 Safari 生成符合要求的密码
  • 编写面向用户的密码要求
  • 通过 JSON 保持前后端规则同步

安全提示

客户端验证可以被绕过。请在服务器上执行策略,并使用 Argon2id、scrypt 或 bcrypt 对密码进行哈希。

常见问题

输出支持哪些正则风格?

JavaScript、PCRE(PHP)、Python re 和 Java 都支持所用的前瞻语法。

passwordrules 属性是什么?

Apple 提出的一个 HTML 属性,告诉 Safari 和 iCloud 钥匙串某网站接受哪些密码,使生成的密码能通过你的验证。

为什么正则不能检查黑名单?

对照成千上万个常见或已泄露的密码进行检查,需要在服务器端查找,而不是用模式匹配。

探索更多分类