From aa533856d5622d38e6fb56ac0ab205038d03752b Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 31 Oct 2017 18:31:14 -0300 Subject: [PATCH] Ivan - Fix linear congruential generator --- server/controllers/system/init-settings.php | 4 ++-- server/libs/Controller.php | 14 +++++++------- server/libs/Hashing.php | 6 +++--- server/libs/LinearCongruentialGenerator.php | 16 +++++++++------- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/server/controllers/system/init-settings.php b/server/controllers/system/init-settings.php index 8ec4e583..a4220171 100755 --- a/server/controllers/system/init-settings.php +++ b/server/controllers/system/init-settings.php @@ -93,7 +93,7 @@ class InitSettingsController extends Controller { private function storeMailTemplates() { $mails = InitialMails::retrieve(); - + foreach ($mails as $mailType => $mailLanguages) { foreach ($mailLanguages as $mailLanguage => $mailContent) { $mailTemplate = new MailTemplate(); @@ -124,7 +124,7 @@ class InitSettingsController extends Controller { } private function storeLanguages() { $defaultLanguage = Controller::request('language'); - + foreach(Language::LANGUAGES as $languageCode) { $language = new Language(); $language->setProperties([ diff --git a/server/libs/Controller.php b/server/libs/Controller.php index c05b7c33..3d198dbc 100755 --- a/server/libs/Controller.php +++ b/server/libs/Controller.php @@ -27,10 +27,10 @@ abstract class Controller { } }; } - + public function validate() { $validator = new Validator(); - + $validator->validate($this->validations()); } @@ -54,7 +54,7 @@ abstract class Controller { public static function request($key, $secure = false) { $result = call_user_func(self::$dataRequester, $key); - + if($secure) { $config = HTMLPurifier_Config::createDefault(); $purifier = new HTMLPurifier($config); @@ -63,7 +63,7 @@ abstract class Controller { return $result; } } - + public static function getLoggedUser() { $session = Session::getInstance(); @@ -90,7 +90,7 @@ abstract class Controller { public static function getAppInstance() { return \Slim\Slim::getInstance(); } - + public function uploadFile($forceUpload = false) { $allowAttachments = Setting::getSetting('allow-attachments')->getValue(); @@ -114,8 +114,8 @@ abstract class Controller { throw new Exception(ERRORS::INVALID_FILE); } } - + public static function isUserSystemEnabled() { return Setting::getSetting('user-system-enabled')->getValue(); } -} \ No newline at end of file +} diff --git a/server/libs/Hashing.php b/server/libs/Hashing.php index da076181..22e8b90a 100755 --- a/server/libs/Hashing.php +++ b/server/libs/Hashing.php @@ -30,8 +30,8 @@ class Hashing { $sqrt = sqrt($number); $prime = true; - for($i = 0; $i < $sqrt; $i++) { - if($sqrt % 2 === 0) { + for($i = 2; $i <= $sqrt; $i++) { + if($number % $i === 0) { $prime = false; break; } @@ -39,4 +39,4 @@ class Hashing { return $prime; } -} \ No newline at end of file +} diff --git a/server/libs/LinearCongruentialGenerator.php b/server/libs/LinearCongruentialGenerator.php index 88df4141..e82d4ed3 100755 --- a/server/libs/LinearCongruentialGenerator.php +++ b/server/libs/LinearCongruentialGenerator.php @@ -4,7 +4,7 @@ class LinearCongruentialGenerator { private $first; private $min = 100000; private $max = 999999; - + public function setRange($min, $max) { $this->min = $min; $this->max = $max; @@ -12,20 +12,22 @@ class LinearCongruentialGenerator { public function setGap($gap) { if(!Hashing::isPrime($gap)) throw new Exception('LinearCongruentialGenerator: gap must be prime'); - + $this->gap = $gap; } public function setFirst($first) { $this->first = $first; } - + public function generate($offset) { - if($offset) return ($this->first - $this->min + $offset * $this->gap) % ($this->max - $this->min + 1) + $this->min; - else return $this->generateFirst(); + if(!$this->first) throw new Exception('LinearCongruentialGenerator: first is not set'); + if(!$this->gap) throw new Exception('LinearCongruentialGenerator: gap is not set'); + + return ($this->first - $this->min + $offset * $this->gap) % ($this->max - $this->min + 1) + $this->min; } - + public function generateFirst() { return Hashing::generateRandomNumber($this->min, $this->max); } -} \ No newline at end of file +}