【问题标题】:How can I use md5 passwords in .htpasswd file?如何在 .htpasswd 文件中使用 md5 密码?
【发布时间】:2012-08-02 15:32:05
【问题描述】:
您好,我正在尝试设置.htaccess 和.htpasswd 文件以查看用户是否可以访问特定目录。当新用户注册时,他们的密码会使用 PHP md5() 函数加密,然后与其他登录信息一起存储在数据库中。我想将他们的一些加密密码动态添加到我的.htpasswd 文件中,以便他们可以进入子成员部分。我遇到了麻烦,因为.htpasswd 文件可以使用crypt() 函数加密的密码,但我不知道如何让它使用他们的 md5 加密密码。
【问题讨论】:
标签:
php
.htaccess
.htpasswd
【解决方案1】:
“我认为您可以使用 htpasswd 的 -m 参数在 htpasswd 文件中明确指定 apache 使用 md5s 作为密码”
我刚刚在 Ubuntu 12.04 和更新版本中发现了完全相反的情况,它默认为 md5,你必须使用 -d 标志才能让它使用 Crypt。其他地方也可能是这种情况,我似乎找不到 htpasswd 的版本号。
【解决方案2】:
Documentation 说:
htpasswd 使用修改后的 MD5 版本加密密码
Apache,或系统的 crypt() 例程。由 htpasswd 管理的文件可能
包含两种类型的密码;一些用户记录可能有
MD5 加密的密码,而同一文件中的其他密码可能有
使用 crypt() 加密的密码。
我认为您可以使用 -m 参数明确指定 apache 在 htpasswd 文件中使用 md5s 作为密码 htpasswd
如果您不想或不能使用 htpasswd 工具,您可以从 PHP 创建基于 crypt() 的密码:
$clearTextPassword = 'some password';
$password = crypt($clearTextPassword, base64_encode($clearTextPassword));