htpasswd 生成
生成 Apache 用的 htpasswd 条目,支持 bcrypt、apr1(MD5)与 SHA-1 三种格式,本地计算口令哈希;配 Nginx / Basic Auth 时随手造一条。
>_ 使用指南 · GUIDE
在本地生成 Apache 用的 htpasswd 条目,支持 bcrypt、apr1(MD5)与 SHA-1 三种哈希格式。输入用户名与口令,选好格式,就能得到一行 username:hash,直接追加进 .htpasswd 文件即可用于 Basic Auth。口令全程在本机计算,不会上传。
三种格式各有取舍:bcrypt 最安全,带盐且计算成本可调,推荐新项目使用;apr1 是 Apache 的传统 MD5-crypt,兼容性最好,适合仍在用老版本 Apache 的场景;SHA-1 已被弱化,仅用于必须兼容的旧环境。.htpasswd 文件每行一条 用户名:哈希,要加多个用户逐行追加即可。Nginx 的 Basic Auth 也能直接读同款 .htpasswd 文件,因此同一份生成结果两边通用。
典型步骤:
- 输入用户名与口令:填写要创建的账号与密码
- 选哈希格式:在 bcrypt / apr1 / SHA-1 中选择
- 生成条目:得到一行
username:hash - 复制并追加:粘贴进
.htpasswd,保存生效
>_ 常见问题 · FAQ
Q1 · 三种格式该怎么选?
新项目一律优先 bcrypt,它带盐、抵御彩虹表,且可通过成本参数调慢暴力破解。需要兼容较老的 Apache 或已有工具链时用 apr1。SHA-1 已不推荐,只有在对方系统强制要求时才用。安全性与兼容性权衡下,默认 bcrypt。
Q2 · 生成的条目怎么放进 .htpasswd 文件?
把生成的整行 username:hash 追加到 .htpasswd 末尾即可,注意每行一个用户、行内不要有多余空格。Apache 配置里用 AuthUserFile 指向该文件、AuthType Basic、Require valid-user 启用。新增用户就再追加一行,不要覆盖已有行。
Q3 · 为什么 Nginx 也能用 htpasswd 生成的结果?
Nginx 的 auth_basic_user_file 读取的就是与 Apache.htpasswd 相同的格式,因此同一份文件两边通用。只要哈希格式是 Nginx 支持的(如 bcrypt 或 apr1),把生成结果放进 .htpasswd 再在 Nginx 配置里引用即可。
Q4 · 口令会不会被上传?
不会。口令仅在你的浏览器本地计算成哈希,不会发送到任何服务器,页面关闭即无残留。哈希本身可以安全地存入 .htpasswd,因为它不可逆;但仍建议只在受控环境中操作,避免口令被旁人看到。
Q5 · 和 MD5、HMAC 工具的分工是什么?
那两个是通用工具:MD5 产出裸摘要(已不适合存密码),HMAC 产出带密钥的签名。本工具产出的是 htpasswd 专用的文件行格式,把用户名、分隔符与适配 Web 服务器的哈希合成一行,可直接喂给 Apache / Nginx,而不是给你一个裸哈希值。