has('username', $username)) { $salt = $this->getPwdInfo($username)['salt']; } else { // generate random salt $salt = \Utils::generateRndString(16); } $hash = hash('sha256', hash('sha256', $raw_passwd).$salt); $encrypt = '$SHA$'.$salt.'$'. $hash; return $encrypt; } /** * Parse fucking inline salt * * @see https://github.com/Xephi/AuthMeReloaded/blob/master/samples/website_integration/sha256/integration.php * @param string $username * @return array */ private function getPwdInfo($username) { $hashed = $this->select($this->column_uname, $username)['password']; $parts = explode('$', $hashed); $pwd_info['password'] = $parts[3]; $pwd_info['salt'] = $parts[2]; return $pwd_info; } }