2015-10-25 4 views
0

Я сделал этот класс пароль, как вы можете увидеть ниже:Php - пароль хеширования

<?php 

namespace lib\Api; 

class Password{ 

    private $password; 
    private $salt; 
    private $hash; 

    public function __construct($password,$salt = ""){ 
     $this->password = $password; 
     $this->salt = $salt; 
     $this->generateHash($this->password,$this->salt); 
    } 
    public function generateHash($password,$salt = ""){ 
     $this->hash = hash('sha256',$password.$salt); 
     return $this->hash; 
    } 
    public function get(){ 
     return $this->hash; 
    } 
    public function equals($password){ 
     if($this->hash == $password){ 
      return true; 
     } 
     return false; 
    } 
} 

?> 

Так я использовать это, чтобы зарегистрировать пользователя в файле/user.php класса

$this->password = (new Password($password,$this->getSalt()))->get(); 

, я также использовать это тоже еще раз проверить это в файле/login.php класса

if((new Password($this->password,$salt))->equals($password)){ 
    return true; 
} 
return false; 

. Теперь я знаю, что если вы хэш-то, что это зависит от того, в каком файле он находится, как он хэширует значение. В этом частичном случае это меня очень смущает, так как я официально помешал его в файле/классе password.php. Как это работает и как я могу решить это легко и приятно?

+0

Просьба уточнить вашу проблему или добавить дополнительные сведения, чтобы точно указать, что именно нужно. Как это написано в настоящее время, трудно точно сказать, что вы просите. – Federkun

+0

@Federico Надеюсь, теперь станет ясно? – Nytrix

+0

Я не получаю эту часть * «... что это зависит от того, в каком файле она находится, как она хэширует значение. В этом частичном случае это меня очень смущает ...» *. Вы можете перефразировать его, пожалуйста? – Axalix

ответ

0

Трудно понять, что вы просите, но я уверен, вы хотите хэш-значение пароля $, прежде чем вы проверите его равенство.

<?php 

namespace lib\Api; 

class Password{ 

    private $password; 
    private $salt; 
    private $hash; 

    public function __construct($password,$salt = ""){ 
     $this->password = $password; 
     $this->salt = $salt; 
     $this->hash = $this->generateHash($this->password); 
    } 
    public function generateHash($password){ 
     return hash('sha256',$password.$this->salt); 
    } 
    public function get(){ 
     return $this->hash; 
    } 
    public function equals($password){ 
     if($this->hash == $this->generateHash($password){ 
      return true; 
     } 
     return false; 
    } 
} 
+0

Да, я делаю это. Хотя пароль равен (я проверяю это от регистрации пользователя и т. Д.), Хэш не равен. Так что есть что-то делать, это в другом файле. – Nytrix

+0

Вы также используете локальную $ salt и атрибут $ this-> salt непоследовательно, одну секунду, и я отправлю код, который, я думаю, более правильный. –

+0

Да, видел, как ты это упоминал. Хотя это ничего не значит для проблемы .. все равно спасибо – Nytrix

Смежные вопросы