htpasswd 生成

给 Nginx 或 Apache 的 Basic 认证生成密码行,支持 bcrypt、APR1-MD5 和 SHA-1,一次可以写多个用户。

已解析 2 个用户。同一个密码想给多个用户名用,就把同一条复制几行改成不同用户名即可。

慢哈希,成本可调,推荐用于所有新部署。前缀 $2y$

五种密码格式怎么选

bcrypt($2y$)是现在唯一推荐的选择:它刻意设计得很慢,并且带盐,暴力破解的成本比 MD5 高一到几个数量级。Nginx 和 Apache 2.4 以上都原生支持。APR1-MD5($apr1$)是 Apache 的传统格式,兼容性最好,但 MD5 属于快哈希,一张显卡每秒能算几十亿次,一旦 .htpasswd 文件泄露,短密码几乎立刻被还原。SHA-1({SHA})和明文同样不适合对外服务,只留给「改不了的老系统」用。

为什么不做传统 crypt

传统 crypt 用的是 DES,密码只取前 8 位——后面的字符会被直接丢掉,而且密钥空间只有 56 位,现代设备几分钟就能爆破。它早已被淘汰,本页只做提示不生成。如果你维护的系统只认 crypt,建议在服务器上用 htpasswd -B 重新生成 bcrypt 行,或者把认证换成别的方案。

Basic 认证本身的安全边界

不管密码哈希多强,Basic 认证的密码在传输时只是 Base64 编码,必须配合 HTTPS 使用,否则中间人可以轻松读到账号密码。它适合给内部后台、测试环境、监控面板加一层门,不适合作为面向用户的登录系统。要更细的权限控制,还是得上 application 层的认证。

生成过程全部在这台浏览器里完成,密码不会上传。但请留意:生成出来的哈希一旦出现在页面上,就等于以另一种形式暴露了密码强度信息,生产环境的密码建议在服务器本地用 htpasswd 命令生成,避免经过任何网页。