htpasswd 生成器
根据用户名和密码生成 Apache 或 nginx 的 .htpasswd 行以及 HTTP Basic 授权头,支持 bcrypt、APR1 或 SHA-1 哈希,全部在浏览器中完成。
正在加载工具…
htpasswd 生成器 — 输入用户名和密码即可同时得到两样东西:可直接粘贴到 Apache 或 nginx basic-auth 的 .htpasswd 行,以及客户端会发送的对应 HTTP Basic 授权头。授权头是 user:pass 的 base64,实时更新;而经过哈希的 .htpasswd 行在你点击「生成」时计算。所有运算都通过 Web Crypto API 和浏览器内的 WebAssembly 哈希器在本地完成,你的密码绝不会上传到任何服务器。
htpasswd 生成器 是什么?
htpasswd 生成器是一款免费的浏览器内工具,用于创建 HTTP 基本认证所需的凭据。系统管理员和网页开发者用它在无需安装 Apache htpasswd 命令行工具的情况下,用用户名和密码保护目录或管理后台。它会生成一行 user:hash,供你追加到 .htpasswd 文件,可选择 bcrypt(最强,$2y$ 格式)、APR1(Apache 的可移植 MD5,$apr1$ 格式)或 SHA-1(SHA 格式)。它还会推导出相应的 Authorization: Basic 头,方便你用 curl 或 REST 客户端测试同一凭据。bcrypt 的成本因子可在「设置」中调整,以获得更强或更快的哈希。
如何使用 htpasswd 生成器
- 输入将要登录的用户名。
- 输入要保护账户的密码;它保留在该字段中,绝不会发送到任何地方。
- 如果只需用于 API 请求或 curl 测试,可立即复制 Basic 授权头。
- 打开「设置」选择哈希算法(bcrypt、APR1 或 SHA-1),并为 bcrypt 设置成本因子。
- 点击「生成」计算经过哈希的 .htpasswd 行,然后复制到服务器的 .htpasswd 文件中。
示例
单个用户的 bcrypt 行
输入
用户:admin,密码:s3cret,算法:bcrypt(成本 10)
输出
admin:$2y$10$...(60 个字符的 bcrypt 哈希,每次随机盐值)
用于 API 测试的 HTTP Basic 头
输入
用户:admin,密码:s3cret
输出
Basic YWRtaW46czNjcmV0
用于旧配置的 APR1(Apache MD5)行
输入
用户:web,密码:pass123,算法:APR1
输出
web:$apr1$<盐值>$<22 个字符的哈希>
常见问题
- 我的密码会被发送到服务器吗?
- 不会。Basic 头和 .htpasswd 哈希都完全在你的浏览器中通过 Web Crypto API 和浏览器内的 WebAssembly 哈希器计算。没有任何内容被上传或存储到任何服务器,因此该工具可离线使用,你的密码绝不会离开页面。
- 我该选哪种哈希?
- 新部署请用 bcrypt,它最能抵御破解,且现代 Apache 和 nginx 都支持。APR1($apr1$)是 Apache 的可移植 MD5,适合旧配置。SHA-1({SHA})最弱,除非系统明确要求,否则最好避免。
- 为什么「生成」按钮要花一点时间?
- bcrypt 和 APR1 故意设计得较慢以抵御暴力破解,且 bcrypt 首次使用时还会加载一个小型 WebAssembly 模块。更高的成本因子会让 bcrypt 更慢但更强。SHA-1 和 Basic 头则是即时的。
- 它和真正的 htpasswd 命令一致吗?
- 一致。bcrypt 行使用 Apache 期望的 $2y$ 前缀,APR1 使用带随机盐的标准 $apr1$ 格式,SHA-1 使用 {SHA} 方案,全都与 htpasswd 生成的文件兼容。
- 可以用于 nginx 吗?
- 可以。nginx 的 auth_basic_user_file 读取相同的 .htpasswd 格式,因此 bcrypt 或 APR1 行可直接使用。nginx 不支持 {SHA},所以请选择 bcrypt 或 APR1。