我有一个用户类,它进行了一些简单的验证。我想使用phpass将所有密码存储为哈希值。但是,我不希望User类设置哈希值,这应该由其他函数来完成。所以,如果我有一个简单的名为setPassword的函数,如何确保密码是哈希值呢?is_binary行吗?我这里并没有比较哈希值,我只是想确保密码是哈希值,md5或sha1或其他类型都无所谓。我只是想确保密码是哈希值。
示例:
class User
{
private password = NULL;
private $errors = array();
public function setPassword($password)
{
// make sure password is a hash...pseudo code
if (!password_is_hash($password))
{
$this->errors[] = 'Invalid password';
return $this;
}
$this->password = $password;
return $this;
}
public function getPassword()
{
return $this->password;
}
}
md5('foo')
会输出哈希值acbd18db4cc2f85cedef654fccc4a4d8
,它本身也可以成为一个完全有效的密码...从技术上讲,任何 32个字符十六进制字符串都是一个md5哈希值,尽管你无法确定它是哪些信息的哈希。 - Marc B