每行一个用户,格式为 用户名:密码。所有计算都在浏览器本地完成,密码不会发往任何服务器。哈希结果请通过 SFTP 或 SSH 上传到服务器,不要用明文邮件传递。
-
生成条目
-
跳过行数
-
当前算法
-
当前盐值
生成的 htpasswd 内容将显示在这里
Apache MD5 的算法为:先取密码的 UTF-8 字节与固定前缀 apr1 及盐值做一次 MD5;再用 密码加盐值加密码 的 MD5 结果作为填充,按密码长度逐段追加,并按密码长度二进制位的奇偶交替追加空字节与密码首字节,再做一次 MD5 得到中间值;随后进行 1000 轮迭代,每轮根据轮次序号决定追加密码还是中间值、是否追加盐值;最后把 16 字节结果按 0、6、12 与 1、7、13 等固定分组,用 ./0-9A-Za-z 字符集编码为 22 个字符。SHA1 格式为左花括号加大写 SHA 加右花括号再接标准 Base64 编码的摘要。每个用户使用独立盐值时,盐值取 用户名拼接原始盐值 的 MD5 前 8 位十六进制字符。
Basic 认证还在用吗
Basic 认证实现成本极低,一条配置就能给目录或站点加上访问密码,至今仍广泛用于后台、测试环境、内部文档与监控面板。但它只适合做粗粒度拦截:密码以 Base64 明文形式随每次请求发送,必须配合 HTTPS,且不适合面向公网的正式用户体系。
三种哈希格式怎么选
- Apache MD5(apr1):兼容性最好,Apache、Nginx 与多数工具都支持,也是本工具默认选项。它以 8 位盐值加 1000 轮迭代增强抗暴力破解能力。
- SHA1({SHA}):算法更简单,部分老旧环境只支持这一种。缺点是加盐不当容易被彩虹表命中。
- bcrypt:安全性最高,但在浏览器端实现代价大,建议在使用 htpasswd 命令行的环境中用 -B 参数生成。
为什么要注意盐值
盐值的作用是让相同密码产生不同哈希,从而击破预计算表。若多个用户的盐值与密码恰好相同,生成的哈希也完全相同,攻击者一眼就能看出这些账号共用同一密码。勾选独立盐值后,每个用户的盐值由用户名与盐值共同派生,同样的密码会得到不同结果。
部署后怎么验证
上传 .htpasswd 后访问受保护路径,浏览器应弹出账号密码框。若一直弹出,通常是文件路径写错、权限不足(Web 服务进程需可读),或者哈希格式不被当前服务端支持,此时可把算法换成兼容性更好的 apr1 再试。
常见问题
密码里能含冒号吗
不能。冒号是用户名与密码的分隔符,含冒号的密码会被截断。请改用其他符号。
生成的哈希能反推密码吗
不能直接反推,但短密码仍可能被离线暴力破解。请使用足够长、随机的密码,并且不要把 .htpasswd 文件放在 Web 可访问的目录下。
你可能还想问
.htpasswd 用来做什么?
为 Apache 或 Nginx 提供基础认证(弹窗输入用户名密码)的密码文件;给内部测试站、后台路径加一道轻量访问控制很常用。
密码用什么算法存?
推荐 bcrypt 或 apr1(MD5 变体),避免使用明文与弱加密方式;Nginx 原生支持部分格式,配置前先确认服务器支持的加密类型。
怎么防止被暴力破解?
基础认证无锁定机制,必须配合 HTTPS 传输并限制来源 IP;高价值系统应改用更完整的身分认证方案,不要只依赖它。
速查在线工具箱