has('username', $username)) { $salt = $this->getPwdInfo($username)['salt']; } else { // generate random salt $salt = \Utils::generateRndString(16); } $class_name = "Encryption\\".\Option::get('encryption'); $encrypt = '$SHA$'.$salt.'$'. $class_name::encrypt($raw_passwd, $salt); 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; } }