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 生成器

  1. 输入将要登录的用户名。
  2. 输入要保护账户的密码;它保留在该字段中,绝不会发送到任何地方。
  3. 如果只需用于 API 请求或 curl 测试,可立即复制 Basic 授权头。
  4. 打开「设置」选择哈希算法(bcrypt、APR1 或 SHA-1),并为 bcrypt 设置成本因子。
  5. 点击「生成」计算经过哈希的 .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。

相关工具