php密码哈希并验证!false

时间:2014-10-31 22:44:35

标签: php

我对 PHP5.5 中的password_hashpassword_verify函数缺少什么,因为它对我不起作用。

如果我执行哈希并验证为一行,则可以正常工作:

php -r "var_dump(password_verify('123', password_hash('123', PASSWORD_DEFAULT)));"
bool(true)

但如果我把它们分成两行,它就不起作用了:

php -r "var_dump(password_hash('123', PASSWORD_DEFAULT));"
string(60) "$2y$10$UTURqRiTDZBx.M9eCTZEmOwTdA5KwKDn2UcdjYFTs2M8egXe/xP3O"

php -r "var_dump(password_verify('123', '$2y$10$UTURqRiTDZBx.M9eCTZEmOwTdA5KwKDn2UcdjYFTs2M8egXe/xP3O'));"
bool(false)

1 个答案:

答案 0 :(得分:5)

在运行命令之前,您的shell正在解释某些字符。如果您使用Bash作为shell,则$字符表示变量的开头。您必须转义这些字符,以便Bash不会干扰

php -r "var_dump(password_verify('123', '\$2y\$10\$UTURqRiTDZBx.M9eCTZEmOwTdA5KwKDn2UcdjYFTs2M8egXe/xP3O'));"

这将返回

bool(true)