分类: 开发工具

htpasswd 生成器

站方自主规划没找到想要的工具?

在本地生成 Basic Auth 密码文件条目

在浏览器里生成 Apache 的 htpasswd 行。用 bcrypt 创建 Basic Auth 凭据,复制或下载 .htpasswd 条目,密码始终不会发往服务器。

每提高一档,攻击者要付出的代价翻一倍,本页生成这一行所需的时间也翻一倍。多数服务器用 10 到 12 比较合适。

htpasswd 行
结果将显示在这里。

bcrypt 最多只读取密码的 72 个字节,其后的内容一概忽略——本页如此,你的服务器也一样。

把文件保存在网站根目录之外,再让 AuthUserFile 指向它。放在可访问目录内的 .htpasswd 是能被下载的。

密码在这个标签页里完成哈希,绝不会发往任何地方,也不会被保存,生成的那一行同样如此。

本页的所有处理都在浏览器中完成,不会上传任何内容。

这个工具能做什么

.htpasswd 文件就是一串 `用户名:哈希` 记录,Apache 的 Basic 认证据此校验登录,nginx 在 auth_basic_user_file 里读取的也是同一种格式。本页在你的设备上构建这些记录:bcrypt 的实现就跑在这个标签页里,所以密码根本不会外传。默认选择 bcrypt,是因为它有意做得很慢,而且逐条加盐——正是这一点让被窃取的文件破解起来代价高昂;成本滑块决定的就是你要让它慢到什么程度。SHA-1 只提供给老到无法接受 bcrypt 的服务器——它不加盐、速度快,而本页就在你做选择的地方把这一点说清楚。

使用方法

  1. 输入用户名和密码,或者生成一个随机密码。
  2. 保持 bcrypt 并选择成本——多数服务器用 10 到 12 即可。
  3. 复制这一行,或下载 .htpasswd 文件,并把它放在网站根目录之外。

隐私说明

本工具完全在你的浏览器中运行。输入的内容不会被上传、保存或分享,关闭标签页即随之消失。

常见问题

我的密码会被上传吗?
不会。哈希在浏览器标签页里计算。密码、盐值和最终生成的那一行都不会被传输、记录或保存到任何地方。
我该选哪种哈希?
除非服务器确实不支持,否则选 bcrypt。它逐条加盐且刻意做得很慢,窃走文件的攻击者每猜一次都得付出真实的时间成本。SHA-1 选项不加盐、破解很快,只是为了兼容才保留。
bcrypt 的成本有什么作用?
它是密钥准备轮数的以 2 为底的对数,因此每加一档,工作量就翻一倍——对攻击者如此,对你服务器在登录时也如此。10 到 12 是常见的平衡点;再高,本页的处理也会明显变慢。
生成的结果能用于 nginx 吗?
可以。nginx 在 auth_basic_user_file 中读取同样的文件格式并支持 bcrypt 条目,所以这里生成的行在 Apache 和 nginx 上都能用。
文件应该放在哪里?
放在服务器对外发布的目录之外,并让 AuthUserFile 指向它的路径。如果 .htpasswd 位于可访问的目录内,任何人都能下载这些哈希并离线破解。