2012-01-06 77 views
0

我正在为当前使用Apache的提示框进行登录的网站登录系统,并将用户名/密码存储在服务器上的文件(而不是数据库中的表)中。我在这里遇到了一个问题,因为密码是以我从未见过的方式加密的。我想知道是否有人可以识别这里使用的加密。例子:这是什么加密?

“布达佩斯” 转换为 “$ APR1 $ 6awtpn87 $ 1PzMKL1M4H6urlEil/z5m /” 和 “马里奥” 转换为 “$ APR1 $ zhadw0iq $ r8plh8o.Jj.V34oJ1tjWV1”

所有加密的口令有“$ apr1“,然后是8个字符,然后是”$“,然后是22个字符。这给出了32个字符,不包括“$ apr1”,所以我认为它可能是md5上的一些变体,但我没有使用过多的加密,所以我希望有人能帮我一把吗?

这是.htaccess文件的内容:

基础进行AuthType AuthName指令 “网站在这里命名为” 的AuthUserFile“的路径在这里密码文件” 需要有效的用户

回答

3

这是一个APR1-MD5散列。该文档可在以下网址找到:

http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

+0

谢谢!但是,如何让PHP在登录时检查密码是否正确(因为我发现该算法涉及随机字符串)? – robert 2012-01-06 10:54:00

+0

请参阅http://stackoverflow.com/questions/1038791/how-to-programmaticaly-build-an-apr1-md5-using-php – 2012-01-06 10:54:57

+0

谢谢。有一件事 - 该脚本的作者说'事实证明我犯了一个错误,这个功能实际上确实创造了工作APR1 htpasswd条目。它们看起来与Apache创建的不同,但它们确实有用。“我愿意让我的脚本识别现有的加密,而不是创建新的,不同的加密。那可能吗? – robert 2012-01-06 11:00:01

0

这是一个密码哈希是构建方式如下:

$ algorythm $盐$哈希

所以这是apache的风格apr1-md5 algorythm,然后是8byte随机盐,然后是你的密码的实际散列 - 使用salt。

有关在HTTP基本身份验证中使用apache httpd支持的密码哈希/加密方法的更多信息,请参阅http://httpd.apache.org/docs/2.1/misc/password_encryptions.html