在线 htpasswd 生成器
在浏览器中用用户名和密码,以 bcrypt 或 SHA-1 生成一行 .htpasswd 用户记录。凭据始终留在你的设备上。
htpasswd 生成器在你的浏览器中哈希你的密码——bcrypt 在一个懒加载模块中,SHA-1 通过 Web Crypto API。你输入的用户名和密码绝不会离开你的设备,也绝不会上传到 ArrayKit。
打开 Basic Auth 生成器
关于 htpasswd 生成器
htpasswd 生成器把用户名和密码转成一行用于 Apache 或 nginx HTTP 基本认证的 .htpasswd 记录。可选择 bcrypt——Apache 写作 $2y$ 的推荐加盐方案,或选择传统的 {SHA} 方案(无盐 SHA-1,Base64)以适配较旧的环境。工具会输出一行可直接使用的 user:hash 记录,你可以复制或下载,并追加到你的 .htpasswd 文件,然后用 AuthType Basic 或 nginx 的 auth_basic_user_file 保护一个目录。它适合正在锁定测试站点、内部仪表盘,或反向代理后目录的系统管理员和开发者。bcrypt 哈希每次都用一个全新的随机盐运行,SHA-1 则使用 Web Crypto API——全部在你的浏览器中,因此你输入的密码绝不离开你的设备。
功能特性
- 用用户名和密码为 .htpasswd 文件生成一行 user:hash 记录
- 带随机盐的 bcrypt 方案,以 Apache 的 $2y$ 前缀输出
- 为较旧的 Apache 和 nginx 配置提供传统 {SHA} 方案(Base64 SHA-1)
- 复制该行,或直接下载为一个 .htpasswd 文件
- 拒绝含冒号、空格或换行的用户名,以免破坏文件
- 每次 bcrypt 运行都产生一个全新的哈希,因此相同的密码绝不会一致
- 同样适用于 Apache mod_auth_basic 和 nginx auth_basic_user_file
- 在你的浏览器中哈希密码,不向服务器发送任何内容
如何使用 htpasswd 生成器
- 输入你想用来保护目录的用户名和密码
- 选择 bcrypt(推荐)或传统的 SHA-1 {SHA} 算法
- 复制生成的 user:hash 行,或下载 .htpasswd 文件
- 把该行追加到你服务器的 .htpasswd,并从认证配置中引用它
示例
输入
username: admin
password: password
algorithm: SHA-1
输出
admin:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=
SHA-1 产生 {SHA} + Base64;bcrypt 则会输出 admin:$2y$...。
常见错误与故障排除
- Apache 记录 'crypt not supported',或 bcrypt 行被拒绝。 — .htpasswd 中的 bcrypt 需要 Apache 2.4 或更高版本并带 mod_authn_file。在较旧的服务器上请改用 {SHA} 方案或升级 Apache。
- 整行都挤到了一行上,且认证始终不成功。 — 每个 .htpasswd 条目都必须独占一行,并以换行结束。下载文件会为你加上换行;如果你是粘贴,请在该行后按回车。
- 用户名含有冒号,文件把它拆错了。 — Apache 在第一个冒号处拆分每个条目,因此用户名中的冒号会破坏解析。移除该冒号——生成器正因此而阻止它。
- 复制了一个 {SHA} 哈希,但登录仍然失败。 — {SHA} 方案是无盐 SHA-1,且对密码区分大小写。请重新核对确切的密码,并对任何面向互联网的场景优先使用 bcrypt。
常见问题
- 我该为 .htpasswd 文件使用哪种算法?
- 对任何通过网络可达的场景使用 bcrypt——它加盐且刻意缓慢,因此能抵御暴力破解。{SHA} 的 SHA-1 方案是无盐的,只值得用于无法运行 bcrypt 的旧服务器。
- 为什么 bcrypt 哈希以 $2y$ 而不是 $2a$ 开头?
- $2y$ 是 Apache 的 htpasswd 工具所写的前缀。bcrypt 库常输出 $2a$ 或 $2b$,但算法完全相同,因此本生成器把前缀规范化为 $2y$,以匹配 Apache 在磁盘上产生的内容。
- 我如何把生成的行加到我的 .htpasswd 文件里?
- 复制 user:hash 行,或下载 .htpasswd 文件,并把该行作为独立一行追加。然后把 AuthUserFile(Apache)或 auth_basic_user_file(nginx)指向那个文件并重载服务器。
- 相同的密码每次都会产生相同的 htpasswd 行吗?
- 使用 bcrypt 时,不会——每次运行都使用一个全新的随机盐,因此相同的密码产生不同的哈希,但仍能验证通过。使用 {SHA} 方案时哈希是无盐的,因此相同的密码总是产生相同的行。
- 我输入的密码会被发送到服务器去哈希吗?
- 不会。bcrypt 在你的浏览器中运行,SHA-1 使用内置的 Web Crypto API,因此你输入的用户名和密码在你的设备上被哈希,绝不会上传到 ArrayKit。
相关工具
全部 ArrayKit 工具