我将新用户添加到数据库中,并使用pHpass散列用户密码。在这一点上,我面临着一个奇怪的问题。
如果我在http://localhost/add.php
上创建/散列密码"123",并在同一页面上使用pHpass的CheckPassword方法检查密码,它会说密码很好。但如果我检查之前创建的哈希密码,在上创建http://localhost/add.php,在http://localhost/login.php
上,它表示密码无效。这是什么?
我的pHpass 3.0(下载自:http://www.openwall.com/phpass/)设置为
Iteration Count = 8
Portable Hashes = FALSE
我也用Portable Hashes = TRUE
进行了尝试,但结果相同。那么,如果有人面临这种情况,任何人究竟如何才能匹配密码呢。
以下是我的做法。
- 在add.php上,我使用pHpass方法
HashPassword
对POST传入的用户密码进行散列,并将其保存到数据库中 - 在login.php上,我使用了pHpass方法
CheckPassword
,其中有两个参数,第一个未经哈希的用户密码和第二个根据用户名保存在数据库中的哈希密码;正如从下载的test.php
文件中提到的pHpasshttp://www.openwall.com/phpass/
帮帮我!
是的,如果您在添加时将密码存储在哈希值中,而不是在需要从login.php登录时,您将首先将密码值转换为哈希值,然后将其与存储值进行比较,它就会起作用。