Fix SSHA hash

This commit is contained in:
Marcin Łojewski
2018-06-13 12:47:56 +02:00
parent 1df4cebf76
commit db6b5e0d2f
3 changed files with 24 additions and 1 deletions

View File

@@ -48,7 +48,7 @@ abstract class SSHA extends AbstractAlgorithm
$saltedPassword = base64_decode( $saltedPassword = base64_decode(
preg_replace("/" . $this->getPrefix() . "/i", "", $dbHash) preg_replace("/" . $this->getPrefix() . "/i", "", $dbHash)
); );
$salt = substr($saltedPassword, -32); $salt = substr($saltedPassword, -(strlen($saltedPassword) - $this->getHashLength()));
$hash = self::ssha($password, $salt); $hash = self::ssha($password, $salt);
return hash_equals($dbHash, $hash); return hash_equals($dbHash, $hash);
@@ -84,6 +84,13 @@ abstract class SSHA extends AbstractAlgorithm
*/ */
public abstract function getAlgorithm(); public abstract function getAlgorithm();
/**
* Get hash length.
*
* @return int The hash length.
*/
public abstract function getHashLength();
/** /**
* @inheritdoc * @inheritdoc
*/ */

View File

@@ -56,6 +56,14 @@ class SSHA256 extends SSHA
return "sha256"; return "sha256";
} }
/**
* @inheritdoc
*/
public function getHashLength()
{
return 32;
}
/** /**
* @inheritdoc * @inheritdoc
*/ */

View File

@@ -56,6 +56,14 @@ class SSHA512 extends SSHA
return "sha512"; return "sha512";
} }
/**
* @inheritdoc
*/
public function getHashLength()
{
return 64;
}
/** /**
* @inheritdoc * @inheritdoc
*/ */