跳到主要内容

htpasswd 生成器

API reference

为 HTTP Basic 认证生成 Apache .htpasswd 行(user:hash),支持 Apache 的 $apr1$ MD5、{SHA} SHA-1 或传统 crypt。哈希在您的浏览器中计算,密码不会发送到任何地方。

输入

不能包含冒号和空格——文件中冒号用于分隔两个字段。

设置

bcrypt(htpasswd -B)是现代且最安全的选择,适用于 Apache 2.4 及以上版本。APR1 是适用于旧版 Apache 或非 Apache 服务器的可移植备选方案。SHA-1 和 crypt 仅供旧系统使用——两者都不安全。

输出

.htpasswd 行

将其粘贴到 .htpasswd 文件中——每行一个用户。

不含用户名的哈希值,适用于将两者分开保存的配置格式。

这对您有帮助吗?

使用此工具的更多方式

REST API

curl -X POST https://api.iotools.cloud/v1/tool/htpasswd-generator \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "admin",
    "password": "correct horse battery staple",
    "algorithm": "bcrypt"
  }'

替换成您账户中的密钥。工具的字段即为请求体——没有额外包装。

让 AI 代理执行

Use the IOTools `htpasswd-generator` tool (htpasswd Generator) on this input:

YOUR_INPUT_HERE

将此粘贴给任何已连接 IOTools MCP 服务器的代理,再加上您的输入内容。

嵌入式小组件

<iframe
  src="https://iotools.cloud/embed/htpasswd-generator/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="htpasswd 生成器 — iotools.cloud"
  sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
  allow="clipboard-write"
  style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>

把它放到您自己的页面上——免费,无需密钥,只需保留一个反向链接。

每次 API/MCP 调用费用5 积分起
需要更多积分?查看定价

也可通过

使用指南

什么是 .htpasswd 文件?

.htpasswd 是 Apache 用来存储 HTTP Basic 认证凭据的纯文本文件——也就是页面加载前弹出的登录框所使用的凭据。每一行对应一个用户:用户名、冒号,然后是该用户密码的 哈希值。

admin:$apr1$dQ2mR8sT$Gk1p6oq9WcE1n0eXqYd0J.

您可以通过 AuthUserFile 让 Apache 指向该文件,Apache 会将收到的密码与这些哈希值进行比对。密码本身从不会被存储。

使用方法

  1. 输入 用户名 和 密码。
  2. 选择 哈希算法(除非有特殊原因,否则选择 APR1)。
  3. 点击 生成 htpasswd,然后将该行复制到您的 .htpasswd 文件中——每行一个用户。

对应的 .htaccess 如下所示:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

应该使用哪种算法?

  • bcrypt($2y$)——现代的默认选择,也是 Apache 支持的最强选项。它被刻意设计得很慢,并且加了盐,这正是密码哈希所需要的特性:使暴力破解和 GPU 破解的成本变得很高。这是 htpasswd -B 生成的格式,适用于 Apache 2.4 及更高版本。除非有特定原因,请选择这个。
  • APR1($apr1$)——Apache 自有的、加盐的 1,000 轮 MD5。它是可移植的备选方案:在 Apache 运行的所有平台上都可用,包括较旧的 Apache 2.2 服务器以及部分非 Apache 软件,也是 htpasswd -m 生成的格式。在无法使用 bcrypt 时使用它。
  • SHA-1({SHA})——一个普通的、未加盐的 SHA-1 摘要。由于没有盐,两个使用相同密码的用户会得到相同的哈希值,很容易被彩虹表破解。它的存在是为了兼容只支持这种格式的旧服务器。
  • crypt——传统的 Unix DES。不安全,仅适用于 Unix,并且会悄悄忽略密码中第八个字符之后的所有内容。仅用于真正古老的环境。

关于 bcrypt 需要了解的特殊事项

有两点。第一,bcrypt 只使用密码的前 72 字节——超出部分会被忽略。这是算法本身的特性,并非本工具的限制,而且 72 字节远超任何合理密码的长度。第二,哈希值以 $2y$ 前缀书写,这正是 Apache 自己的 htpasswd -B 所使用的标签;$2a$、$2b$ 和 $2y$ 三种变体选择的是同一算法,因此生成的结果可以在任何支持 bcrypt 的环境中验证(Apache、Nginx、PHP 的 password_verify 等)。

我的密码会被发送到其他地方吗?

不会。 每个哈希值都由 JavaScript 在您的浏览器中计算。密码不会被传输、记录或存储,即使断开网络,本工具也能正常工作。(本工具的旧版本会将密码发送到服务器进行哈希计算——当前版本不需要这样做。)

哈希值真的正确吗?

是的,而且值得亲自验证,而不只是相信。每个 bcrypt 哈希都通过 Apache 自己的 htpasswd -vbB 进行了确认——这是一个独立实现,用于验证该哈希能否对原始密码完成认证。APR1 的输出与 openssl passwd -apr1 和 htpasswd -m 的输出逐字节一致,crypt 的输出则与系统的 crypt(3) 一致,无论是固定的参考向量,还是随机生成的密码/盐组合,都经过了测试——包括非 ASCII 密码,这类密码在朴素实现中会悄悄产生不同的结果。

为什么每次点击“生成”后哈希值都会变化?

因为 bcrypt、APR1 和 crypt 都是加盐的:每个哈希都会加入一个新的随机盐,因此同一个密码每次都会生成不同的字符串。这正是我们想要的效果——即使攻击者窃取了文件,也无法通过比对哈希发现两个用户使用了相同的密码。生成的任何一行都可以对同一个密码完成认证。

htpasswdapachebasic authpasswordapr1md5htaccess

喜欢这些工具?去掉广告吧。

一次性付款即可永久移除您账户中的所有广告。无需订阅,不追踪。