array( 'Username' => "Username", 'EmailAddress' => "EmailAddress", 'Hash' => "Hash", 'Salt' => "Salt" ), 'numeric' => array( 'AccessLevel' => "AccessLevel" ) ); public function GenerateSalt() { $this->uSalt = random_string(10); } public function GenerateHash() { if(!empty($this->uSalt)) { if(!empty($this->uPassword)) { $this->uHash = $this->CreateHash($this->uPassword); } else { throw new MissingDataException("User object is missing a password."); } } else { throw new MissingDataException("User object is missing a salt."); } } public function CreateHash($input) { global $settings; $hash = crypt($input, "$5\$rounds=50000\${$this->uSalt}{$settings['salt']}$"); $parts = explode("$", $hash); return $parts[4]; } public function VerifyPassword($password) { if($this->CreateHash($password) == $this->sHash) { return true; } else { return false; } } } ?>