安全

htpasswd 生成器

为 Apache 与 nginx 的 HTTP Basic Auth 生成 .htpasswd 凭据行。新项目默认用 bcrypt,老服务器需要时可切换 Apache MD5、SHA-512 或传统 crypt;也可以校验已有哈希是否匹配某个密码。所有计算都在浏览器内完成,密码不会上传。

  • 八种算法:从 bcrypt(推荐)到 Apache MD5、SHA-512/256-crypt,以及传统的 SHA-1、crypt 与明文
  • 全部在浏览器内运行,密码不会离开本机
  • bcrypt 成本可调,内置强密码生成器,批量模式可一次生成整份 .htpasswd 文件
  • 校验模式拿密码比对任意已有哈希,并告诉你它是用哪种算法生成的
工具/htpasswd 生成器

成本越高,哈希越慢、越难破解。10–12 是合理的默认值。

在你的浏览器本地哈希,密码绝不上传。

正在加载哈希引擎
8%
bcrypt 与 crypt 引擎只需下载一次,本次访问期间会被缓存。
输出

功能简介

一份 .htpasswd 文件是否可靠,取决于哈希算法、盐值和保存方式。这个工具给你现代默认算法、面向老服务器的兼容选项,以及核对已有凭据的办法,而密码始终不离开页面。

  1. 01

    默认用 bcrypt

    HTTP Basic Auth 的推荐算法,成本因子可调,让你在速度与抗暴力破解之间取舍。输出采用 Apache 与 nginx 所期望的 $2y$ 前缀。

  2. 02

    覆盖常见兼容格式

    经典 .htpasswd 用的 Apache MD5(apr1),现代 Unix 用的 SHA-512 与 SHA-256 crypt,外加 MD5 crypt、SHA-1、传统 DES crypt 与明文,方便应对老系统约束。

  3. 03

    清楚标出安全级别

    每种算法都标注推荐、强、过时或不安全,帮助你区分适合新项目的选择,以及只应为兼容保留的弱格式。

  4. 04

    校验已有哈希

    切到校验模式,粘贴一个哈希或完整的 用户名:哈希 行,输入密码,工具就会告诉你是否匹配、以及用的是哪种算法——无需登录服务器。

  5. 05

    批量生成文件

    粘贴多组 用户名:密码,一次得到完整的 .htpasswd 文件,可复制或下载,而不必为每个用户跑一次命令行。

  6. 06

    配套命令提示

    每个结果都附带等效的 htpasswd 或 openssl 命令,方便你在服务器上复现,也能顺带学会参数。

如何使用

只需几步,就能生成一行凭据、或整份文件——全程密码不离开浏览器。

  1. 01

    输入用户名,然后键入密码,或点骰子生成一个强密码。

  2. 02

    选择算法。除非老服务器需要特定格式,否则保持 bcrypt;想要更慢更强的哈希就调高 bcrypt 成本。

  3. 03

    复制生成的 .htpasswd 行,或直接下载为 .htpasswd 文件。用户很多时,打开批量模式,每行粘贴一个 用户名:密码。

  4. 04

    让服务器指向该文件——Apache 用 AuthUserFile,nginx 用 auth_basic_user_file——然后重载。任何时候都能用校验模式核对密码与已有哈希。

功能说明

让输出可放心上线、值得信任的那些细节。

  • bcrypt 输出采用 $2y$ 标识,crypt 哈希与 openssl passwd 逐字节一致,可直接放进 Apache 与 nginx。
  • bcrypt、apr1 与 crypt 系列会使用密码学安全的随机盐,所以相同密码通常也会得到不同输出。
  • 内置密码生成器使用浏览器的 crypto API,并避开 O、0、l、1 这类易混字符。
  • 校验模式按哈希前缀自动识别算法,并用嵌入的盐重新核对,含 bcrypt 的 $2a$、$2b$、$2x$、$2y$ 各变体。
  • 不上传、不记录。密码与哈希都在内存中处理,关闭标签页后即消失。

适合哪些场景

一个快速、私密的 htpasswd 工具在这些场景里最有价值。

  1. 保护预发布站点

    几分钟就给预发布或内部环境加上 Basic Auth,生成可直接写入受保护 .htpasswd 文件的 bcrypt 凭据。

  2. 锁定某个 nginx location

    为 auth_basic_user_file 生成哈希,给后台路径、监控端点或私有下载加门,而不必搭一整套登录系统。

  3. 安全地轮换凭据

    用全新强密码和更高的 bcrypt 成本重新生成用户行;在替换前,先用校验模式拿旧密码核对旧哈希。

  4. 一次性开通大量用户

    从表格或脚本粘贴一批 用户名:密码,一次得到完整的 .htpasswd 文件,省去循环调用命令行。

  5. 审计接手的文件

    用校验模式确认已有 .htpasswd 行用的是哪种算法、已知密码是否仍然匹配,再决定要升级什么。

  6. 迁移老旧 Basic Auth

    识别旧文件里的 apr1、SHA-1 或 DES 记录,逐步替换为 bcrypt 或 SHA-crypt,降低一次性迁移的风险。

延伸阅读

先要一串原始凭据?用密码生成器 生成一个;要对任意文本做一次性摘要,哈希生成器 覆盖 MD5、SHA 等多种算法。

.htpasswd 与 Basic Auth 的关系

HTTP Basic Auth 是给站点或某个路径加上用户名密码最简单的方式。服务器把凭据存在一个纯文本文件里,每行一个用户,密码只以哈希形式保存。

  1. 文件格式

    每行是 用户名:哈希。Apache 通过 AuthUserFile 读取,nginx 通过 auth_basic_user_file 读取。哈希前缀($2y$、$apr1$、$6$、{SHA})告诉服务器该用哪种算法去校验。

  2. 为什么现代选 bcrypt

    bcrypt 故意做得很慢且自带盐值,离线猜密码代价高昂。可调的成本因子让你随硬件变快而逐步提高这个代价,而 MD5、SHA-1 这类固定成本的哈希做不到。

  3. Apache MD5(apr1)不是裸 MD5

    $apr1$ 方案把 MD5 经过上千次加盐迭代,远比单次 MD5 摘要更强,也仍是老版 Apache 上最通用的选择——只是在支持的地方更应优先 bcrypt。

  4. SHA-512 与 SHA-256 crypt

    $6$ 与 $5$ 是现代 Linux 登录所用的加盐迭代 crypt 格式。nginx 与较新的 Apache 都能直接校验,是一个不依赖额外组件的强选项。

  5. 那些弱算法,以及它们为何还在

    SHA-1({SHA})、传统 DES crypt 与明文,只为兼容非常老的软件而留存。DES 会悄悄忽略第八个字符之后的所有内容;明文则是谁拿到文件谁都能读。只在别无他法时使用。

  6. 加盐与校验

    每种现代方案都会把一个随机盐嵌进输出,所以同一个密码每次都得到不同哈希。校验就是用嵌入的盐重新跑一遍算法再比对——这正是这里校验模式所做的。

使用建议

让 Basic Auth 凭据更强、文件更干净的一些习惯。

  • 新凭据默认用 bcrypt,只有当某台服务器无法校验时,才退回 apr1 或 crypt。
  • 除非不可避免的老系统强制要求,否则绝不上线 SHA-1、DES 或明文——它们几乎或完全不提供保护。
  • 随硬件提升逐步提高 bcrypt 成本;如今 10–12 比较合理,敏感端点可更高。
  • 把 .htpasswd 放在 Web 服务器无法对外暴露的路径,并收紧文件权限,让哈希无法被下载。
  • 务必让 Basic Auth 配合 HTTPS,因为浏览器每次请求都会以 base64 编码(而非加密)发送用户名和密码。

边界与注意事项

这个工具做什么,又把什么留给你的服务器。

  • 它生成并校验 .htpasswd 文件的哈希,不会编辑服务器配置、上传文件或管理谁能读取它。
  • DES crypt 只用密码的前八个字符,明文则根本不是哈希——两者只为兼容而提供,并非为了安全。
  • 校验模式识别标准哈希前缀;无法识别或格式错误的哈希会被报出,而不是去猜。
  • bcrypt 会截断 72 字节以上的密码,这是算法本身的特性,对所有 bcrypt 实现都成立。

常见问题

关于 .htpasswd 文件、各种算法以及本工具的常见问题。

我的密码会被发送到服务器吗?

不会。每个哈希都在你的浏览器里用 JavaScript 计算,密码只存在于内存中。不上传、不记录、不存储——这正是它与必然要接收你密码的服务端 htpasswd 生成器的关键区别。

我该选哪种算法?

选 bcrypt,除非老服务器无法校验它。bcrypt 加盐、故意很慢、成本可调。若没有 bcrypt,Apache MD5(apr1)或 SHA-512 crypt 也是强选择。除不可避免的兼容场景外,避免 SHA-1、DES 和明文。

这些哈希兼容 Apache 和 nginx 吗?

兼容。bcrypt 输出用 Apache 期望的 $2y$ 前缀,apr1、SHA-256、SHA-512 crypt 格式与 openssl passwd 及系统 crypt 一致,因此 Apache(AuthUserFile)与 nginx(auth_basic_user_file)都能校验。

bcrypt 成本因子有什么用?

它决定 bcrypt 运行多少轮,每加一档工作量翻倍。成本越高,单个哈希计算越慢,从而拖慢离线猜测攻击。对大多数站点,成本 10 到 12 能在安全与登录速度间取得平衡。

校验模式怎么用?

粘贴一个哈希或完整的 用户名:哈希 行,再输入要测试的密码。工具读取前缀识别算法,用哈希里嵌入的盐重新运行并比对,告诉你密码是否匹配、以及用的是哪种方案。

能一次生成整份 .htpasswd 文件吗?

能。打开批量模式,每行粘贴一个 用户名:密码。每行都会用所选算法哈希,你可以复制结果,或直接下载为 .htpasswd 文件。

用了 Basic Auth 还需要 HTTPS 吗?

绝对需要。Basic Auth 每次请求都以 base64 编码发送用户名和密码,解码极其容易。只有 HTTPS 才能让这些凭据在传输中保持私密,所以绝不要在纯 HTTP 上使用 Basic Auth。

更多相关工具

继续探索安全与身份工具的其余部分。