# htpasswd 在线生成器 - Nginx / Apache 密码文件与验证

> 免费在线生成 .htpasswd：bcrypt、APR1-MD5、SHA-512/256 crypt、{SHA}，多用户批量生成并合并到已有文件，验证密码是否匹配，附 nginx auth_basic 与 .htaccess 配置。

- 网址: https://qilingtools.com/zh/htpasswd
- 分类: 开发工具 (https://qilingtools.com/zh/dev)
- 标签: [隐私安全](https://qilingtools.com/zh/tags/privacy), [开发](https://qilingtools.com/zh/tags/dev), [运维部署](https://qilingtools.com/zh/tags/devops)
- 最后更新: 2026-10-26
- 价格: 免费，无需注册
- 隐私: 在浏览器本地处理，文件不上传服务器

想给网站后台、测试环境或下载目录加一道账号密码，nginx 的 auth_basic 和 Apache 的 Basic 认证都需要一个 .htpasswd 文件，但服务器上不一定装了 htpasswd 命令。在这里填入用户名和密码（可以一次添加多个用户，也可以一键生成随机强密码），选择算法后生成文件内容：bcrypt（$2y$，最安全）、APR1-MD5（$apr1$，兼容性最好）、SHA-512 crypt（$6$）、SHA-256 crypt（$5$，可自定义轮数）、{SHA}（旧格式）或明文。每种算法都标注了 nginx 与 Apache 的支持情况。粘贴已有的 .htpasswd 还能合并：同名用户被替换，其他用户保留。“验证密码”可以粘贴一行 user:hash 或单独的哈希，自动识别格式（含 $1$、{SSHA}）并判断密码是否正确，排查“密码明明对却登录不了”。“服务器配置”页根据你填的提示文字、文件路径和受保护路径生成 nginx location 配置、.htaccess 和 Apache 虚拟主机配置。APR1 与 SHA-crypt 是按规范自行实现的，与 openssl passwd、htpasswd 的结果逐一核对过；bcrypt 在后台线程计算。密码不会离开你的浏览器。

## 使用步骤

1. 输入用户名和密码（可添加多个用户或生成随机密码），选择加密算法
2. 点击“生成”，复制或下载 .htpasswd 内容，上传到服务器
3. 在“服务器配置”页复制 nginx 或 Apache 配置；需要时到“验证密码”页核对

## 功能特点

- bcrypt（$2y$，cost 可调）、APR1-MD5、SHA-512 / SHA-256 crypt、{SHA}、明文
- 多用户批量生成，随机强密码
- 合并到已有 .htpasswd：同名替换，其余保留
- 验证 htpasswd 行或哈希，自动识别 $2y$ / $apr1$ / $1$ / $5$ / $6$ / {SHA} / {SSHA}
- 各算法在 nginx 与 Apache 下的兼容性说明
- 生成 nginx auth_basic、.htaccess 与 Apache 虚拟主机配置
- 与 openssl passwd、htpasswd 结果一致，可自定义盐和轮数
- 本地计算，bcrypt 在 Web Worker 中运行

## 常见问题

### nginx 应该选哪种算法？

nginx 自己实现了 APR1-MD5 和 {SHA}，在所有平台都能用；bcrypt、SHA-512 crypt 则交给操作系统的 crypt() 函数。Debian 11+、Ubuntu 22.04+、RHEL 9、Alpine 等较新的 Linux 都支持 bcrypt，推荐优先用 bcrypt；如果不确定服务器环境，APR1-MD5 最稳妥。生成后可在服务器上用 nginx -t 检查配置，再实际登录试一次。

### 同一个密码每次生成的结果都不一样，正常吗？

正常。bcrypt、APR1、SHA-crypt 每次都会随机生成盐（salt），盐就写在哈希字符串里，服务器验证时会取出盐重新计算，所以不同的字符串都能对应同一个密码。只有不加盐的 {SHA} 和明文每次结果相同，这也是它们不安全的原因。

### .htpasswd 文件放在哪里？权限怎么设？

不要放在网站根目录下（否则可能被直接下载），常见位置是 /etc/nginx/.htpasswd 或 /etc/apache2/.htpasswd。文件需要能被 nginx 或 Apache 的运行用户（如 www-data、nginx）读取，一般设为 640 并把属组设为该用户。修改后 nginx 不需要重启即可生效，配置文件改动则需要 reload。

### Basic 认证安全吗？

Basic 认证每次请求都会把用户名和密码以 Base64 编码发送，Base64 不是加密，所以必须配合 HTTPS 使用。它适合保护后台、测试站等小范围访问，不适合作为面向公众的登录系统。密码文件本身建议使用 bcrypt，避免文件泄露后被快速破解。

## 相关工具

- [JSON 格式化](https://qilingtools.com/zh/json): 免费在线 JSON 格式化：一键美化、压缩，实时语法校验并定位到出错行列，支持树形视图折叠、键名排序、转义与去转义、Unicode 转中文、复制下载，数据不上传。
- [Base64 编解码](https://qilingtools.com/zh/base64): 免费在线 Base64 编码解码工具：支持中文 UTF-8、URL 安全变体，文本与 Base64 互转，实时转换，本地处理不上传。
- [URL 编解码](https://qilingtools.com/zh/url-encode): 免费在线 URL 编码解码工具：encodeURIComponent 与 encodeURI 两种模式，处理中文、空格与特殊符号，本地实时转换不上传。
- [JWT 解析](https://qilingtools.com/zh/jwt): 免费在线 JWT 解析工具：解码 JWT 的 Header 与 Payload，展示过期时间、签发时间等，本地解析不上传，保护令牌安全。
- [时间戳转换](https://qilingtools.com/zh/timestamp): 免费在线 Unix 时间戳转换工具：时间戳与日期互转，自动识别秒/毫秒，显示本地时间、UTC、ISO 8601 和相对时间，实时更新。
- [哈希计算](https://qilingtools.com/zh/hash): 免费在线哈希/摘要计算工具：对文本或文件计算 SHA-1、SHA-256、SHA-384、SHA-512，使用浏览器加密接口本地完成，文件不上传。
- [UUID 生成](https://qilingtools.com/zh/uuid): 免费在线 UUID 生成器：使用加密安全随机数批量生成符合 RFC 4122 的 UUID v4，可大写、去连字符、加花括号，一键复制。
- [进制转换](https://qilingtools.com/zh/base-convert): 免费在线进制转换工具：二进制、八进制、十进制、十六进制及任意 2–36 进制互转，支持大整数（BigInt），本地实时计算。
