php密码哈希并验证!false

Chr*_*ian 0 php

我错过了PHP5.5中的函数password_hashpassword_verify函数,因为它对我不起作用.

如果我执行哈希并验证为一行,它的工作原理如下:

php -r "var_dump(password_verify('123', password_hash('123', PASSWORD_DEFAULT)));"
bool(true)
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

cod*_*ken 5

在运行命令之前,您的shell会解释一些字符.如果您使用Bash作为shell,则$字符表示变量的开头.你必须逃避这些角色,以便Bash不会干涉

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

这将返回

bool(true)
Run Code Online (Sandbox Code Playgroud)