关于此工具
为 Apache 或 nginx HTTP 基本认证生成一行可直接粘贴的 .htpasswd 凭据(用户名:哈希)。用户名、密码和哈希运算全部在你的浏览器本地进行——不上传任何内容,也没有 eval 或外部库。
支持两种算法。APR1-MD5(Apache $apr1$ 格式)用纯 JavaScript 实现,包括一个自包含的 MD5 和完整的 1000 轮加盐 crypt 循环,采用从 crypto.getRandomValues 抽取的 8 字符随机盐。SHA-1 使用浏览器内置的 crypto.subtle.digest,经 base64 编码并以 {SHA} 为前缀,与 htpasswd -s 输出一致。有意不包含 Bcrypt,因为一个正确、快速的纯 JS bcrypt 在客户端运行不切实际。
输入用户名和密码,选择一种算法,把生成的行复制到你的 .htpasswd 文件中。使用新盐来重新生成 APR1 盐(每次保存都会为相同密码产生不同的哈希,这是预期且正确的)。
常见问题
我的密码会被发送到某处吗?
不会。所有哈希运算完全在你的浏览器中运行,APR1 使用内置的 MD5,SHA-1 使用原生的 crypto.subtle。不传输任何内容,也没有 eval。
我该选哪种算法?
APR1-MD5 ($apr1$) 是推荐的 Apache 默认选项且是加盐的,所以是这里较安全的一种。SHA-1 ({SHA}) 是不加盐的,主要用于旧式配置或 nginx 兼容。
为什么 APR1 哈希每次都变?
APR1 使用一个随机的 8 字符盐,所以相同密码每次产生不同的哈希。这是设计使然;Apache 在检查登录时会从存储的哈希中读回盐。
为什么不提供 bcrypt?
Bcrypt 被有意排除。一个正确的纯 JavaScript bcrypt 在浏览器中会又大又慢,所以本工具改为提供可靠的、离线的 APR1-MD5 和 SHA-1 模式。