我想检查一下两个哈希是否相同,然后在数据库中添加相同的哈希,也就是说,如果密码与确认密码相同,那么用户可以注册
我尝试使用的比较运算符==
和password_verify
方法,但是如果密码哈希相同,则它们都不返回true
如何验证两个密码哈希值相同,然后将它们添加到数据库中?
<?php
class SignUp {
private $email;
private $password;
private $password2;
public function setEmail($e) {
$this->email = $e;
}
public function getEmail() {
return $this->email;
}
public function setPassword($p) {
$this->password = password_hash($p, PASSWORD_BCRYPT);
}
public function getPasswordHash() {
return $this->password;
}
public function setPassword2($p2) {
$this->password2 = password_hash($p2, PASSWORD_BCRYPT);
}
public function getPasswordHash2() {
return $this->password2;
}
public function CheckHashes() {
if($this->getPasswordHash() == $this->getPasswordHash2()) {
echo 'This is true'; //Insert into the database
}
else {
echo 'This is false';
}
echo "\n";
if(password_verify($this->getPasswordHash(), $this->getPasswordHash2())) {
echo 'True'; //Insert into the database
}
else {
echo 'False';
}
}
}
$obj = new SignUp();
$obj->setEmail('email');
$obj->setPassword('string');
$obj->setPassword2('string');
echo $obj->CheckHashes();
每次password_hash()
使用相同的普通密码进行调用时获得完全不同的结果是完全有意的,也是非常重要的安全措施。这是对预先计算的哈希攻击(彩虹表)的防御,还可以减轻数据泄漏。
验证用户是否正确键入了密码不需要任何加密工具。好的===
普通密码操作者应足以满足大多数使用需求。
public function setPassword($password, $confirm) {
if ($password === $confirm) {
$this->password = password_hash($password, PASSWORD_BCRYPT);
} else {
// Handle input error here
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句