Commit 427fe625 authored by Taylor Otwell's avatar Taylor Otwell

Refactor hash class to use PHPass.

parent d2d5127f
...@@ -3,48 +3,42 @@ ...@@ -3,48 +3,42 @@
class Hash { class Hash {
/** /**
* The salty, hashed value. * Hash a string using PHPass.
* *
* @var string * PHPass provides reliable bcrypt hashing, and is used by many popular PHP
*/ * applications such as Wordpress and Joomla.
public $value;
/**
* The salt used during hashing.
* *
* @var string * @access public
* @param string $value
* @return string
*/ */
public $salt; public static function make($value)
{
return static::hasher()->HashPassword($value);
}
/** /**
* Create a new salted hash instance. * Determine if an unhashed value matches a given hash.
*
* If no salt is provided, a random, 16 character salt will be generated
* to created the salted, hashed value. If a salt is provided, that salt
* will be used when hashing the value.
* *
* @param string $value * @param string $value
* @param string $salt * @param string $hash
* @return void * @return bool
*/ */
public function __construct($value, $salt = null) public static function check($value, $hash)
{ {
$this->salt = (is_null($salt)) ? Str::random(16) : $salt; return static::hasher()->CheckPassword($value, $hash);
$this->value = sha1($value.$this->salt);
} }
/** /**
* Factory for creating hash instances. * Create a new PHPass instance.
* *
* @access public * @return PasswordHash
* @param string $value
* @param string $salt
* @return Hash
*/ */
public static function make($value, $salt = null) private static function hasher()
{ {
return new self($value, $salt); require_once SYS_PATH.'vendor/phpass'.EXT;
return new \PasswordHash(10, false);
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment