Apache HTTPD 或 APR 的 PBKDF2(或 BCrypt)哈希实现

Apache HTTPD 或 APR 的 PBKDF2(或 BCrypt)哈希实现

是否有人知道在 Apache HTTPD 中使用 PBKDF2 或 BCrypt 作为密码哈希的(简单)方法。

一般情况是,我在 /private 中有一个资源,我想将其限制给一组特定用户。这些用户的密码将存储在数据库中,并使用 进行验证mod_auth_dbd

我会喜欢不再使用 SSHA。

我可以在 Apache apr-util 中看到有一个函数apr_password_validate(它处理所有现在不受欢迎的哈希类型);并且在 apr_crypto_openssl.c 中有crypto_passphrase一个 PBKDF2 的实现。

有人将这两者焊接在一起了吗?(或者我只是错过了 Apache 文档中某个显而易见的东西?)

答案1

因此经过进一步审查后,似乎一切都比我想象的简单得多。

HTTPD 使用系统提供的加密函数,从而利用其模块化。

http://en.wikipedia.org/wiki/Crypt_(Unix)#Modular_crypt.283.29_Algorithms

理论上它直接支持 BCrypt(尽管我没有测试过)。我确实使用 $6 前缀测试了 SHA-512。

因此,设置按如下计算的密码即可达到预期的结果:

salt = 'fGn9LR75';
puts 'quohjo5oor4ac3Deolei'.crypt('$6$' + salt);
=>    
"$6$fGn9LR75$juRSrMtKBa8pdZ8tbTouUvDItoF9Fp.LVk8Kqv2ZL5T.R.q/nUQNGePve1Ge/8rDf/xqUwgpY.3F1MQ0qtauf0"

答案2

对于未来的搜索者,请注意,2013 年 2 月发布的 Apache 2.4.4 版本中添加了 bcrypt 支持。

$ htpasswd -nbB -C 11 用户名 密码 用户名:$2y$11$p1icdLB/EqI2z2EPt6JrQOUdy1GzHg5GdDWcwdj3MIXJLSkgrILoa

相关内容