public function computeUnixPassword($plain_password)
 {
     $number_generator = new RandomNumberGenerator(self::SALT_SIZE);
     $salt = $number_generator->getNumber();
     // We use a salted MD5 to create the Unix Password
     return crypt($plain_password, '$1$' . $salt . '$');
 }
Пример #2
0
 /**
  * @return Rest_Token
  */
 public function generateTokenForUser(PFUser $user)
 {
     $number_generator = new RandomNumberGenerator();
     $token = $number_generator->getNumber();
     $this->token_dao->addTokenForUserId($user->getId(), $token, $_SERVER['REQUEST_TIME']);
     return new Rest_Token($user->getId(), $token);
 }
 public function itGeneratesTokenOfTheAskedSize()
 {
     $number_generator_8_bits = new RandomNumberGenerator(1);
     $this->assertEqual(2, strlen($number_generator_8_bits->getNumber()));
     $number_generator_64_bits = new RandomNumberGenerator(8);
     $this->assertEqual(16, strlen($number_generator_64_bits->getNumber()));
     $number_generator_128_bits = new RandomNumberGenerator();
     $this->assertEqual(32, strlen($number_generator_128_bits->getNumber()));
 }
 public function computeUnixPassword($plain_password)
 {
     $number_generator = new RandomNumberGenerator(self::SALT_SIZE);
     $salt = $number_generator->getNumber();
     // We use SHA-512 with 5000 rounds to create the Unix Password
     // SHA-512 is more widely available than BCrypt in GLibc OS library
     // Only 5000 rounds are used (which is the default value) to keep reasonable performance
     return crypt($plain_password, '$6$rounds=5000$' . $salt . '$');
 }
 /**
  * @return string
  */
 public function getConfirmationCode()
 {
     $confirmation_code = null;
     while ($confirmation_code === null) {
         $possible_confirmation_code = $this->random_generator->getNumber();
         if ($this->user_manager->getUserByConfirmHash($possible_confirmation_code) === null) {
             $confirmation_code = $possible_confirmation_code;
         }
     }
     return $confirmation_code;
 }
Пример #6
0
 /**
  * Sorter test method.
  *
  * @param object ISorter $sorter The sorter to test.
  * @param integer $n The length of array to test.
  * @param integer $seed A seed for the random number generator.
  * @param integer $m If given, data values are restricted to [0,m-1].
  * (Optional).
  */
 public static function test(ISorter $sorter, $n, $seed, $m = 0)
 {
     //printf("AbstractSorter test program.\n");
     RandomNumberGenerator::setSeed($seed);
     $data = new BasicArray($n);
     for ($i = 0; $i < $n; ++$i) {
         $datum = intval(RandomNumberGenerator::next() * Limits::MAXINT);
         if ($m != 0) {
             $datum = $datum % $m;
         }
         $data[$i] = $datum;
     }
     $timer = new Timer();
     $timer->start();
     $sorter->sort($data);
     $timer->stop();
     $datum = sprintf("%s %d %d %f", $sorter->getClass()->getName(), $n, $seed, $timer->getElapsedTime());
     fprintf(STDOUT, "%s\n", $datum);
     fprintf(STDERR, "%s\n", $datum);
     for ($i = 1; $i < $n; ++$i) {
         if ($data[$i] < $data[$i - 1]) {
             printf("FAILED\n");
             break;
         }
     }
 }
Пример #7
0
 /**
  * @return string the new session_hash
  */
 function createSession($user_id, $time)
 {
     // generate a token from a PRNG
     // continue until unique token is generated (SHOULD only be once)
     $number_generator = new RandomNumberGenerator();
     do {
         $token = $number_generator->getNumber();
         $sql = "SELECT 1\n                    FROM session\n                    WHERE session_hash = " . $this->da->quoteSmart($token);
         $dar = $this->retrieve($sql);
     } while ($dar && $dar->rowCount() == 1);
     $sql = sprintf("INSERT INTO session (session_hash, ip_addr, time,user_id) VALUES (%s, %s, %d, %d)", $this->da->quoteSmart($token), $this->da->quoteSmart($_SERVER['REMOTE_ADDR']), $time, $user_id);
     if ($this->update($sql)) {
         $this->storeLoginSuccess($user_id, $time);
     } else {
         $token = false;
     }
     return $token;
 }
Пример #8
0
<?php

//
// Copyright 2015 (c) Enalean
// SourceForge: Breaking Down the Barriers to Open Source Development
// Copyright 1999-2000 (c) The SourceForge Crew
// http://sourceforge.net
//
//
require_once 'pre.php';
$em =& EventManager::instance();
$em->processEvent('before_lostpw-confirm', array());
$number_generator = new RandomNumberGenerator();
$confirm_hash = $number_generator->getNumber();
$request =& HTTPRequest::instance();
$res_user = db_query("SELECT * FROM user WHERE user_name='" . db_es($request->get('form_loginname')) . "'");
if (db_numrows($res_user) < 1) {
    exit_error("Invalid User", "That user does not exist.");
}
$row_user = db_fetch_array($res_user);
db_query("UPDATE user SET confirm_hash='" . $confirm_hash . "' WHERE user_id=" . $row_user['user_id']);
list($host, $port) = explode(':', $GLOBALS['sys_default_domain']);
$message = stripcslashes($Language->getText('account_lostpw-confirm', 'mail_body', array($GLOBALS['sys_name'], get_server_url() . "/account/lostlogin.php?confirm_hash=" . $confirm_hash)));
$mail = new Mail();
$mail->setTo($row_user['email'], true);
$mail->setSubject($Language->getText('account_lostpw-confirm', 'mail_subject', array($GLOBALS['sys_name'])));
$mail->setBody($message);
$mail->setFrom($GLOBALS['sys_noreply']);
$mail_is_sent = $mail->send();
if (!$mail_is_sent) {
    $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('global', 'mail_failed', array($GLOBALS['sys_email_admin'])), CODENDI_PURIFIER_FULL);
Пример #9
0
 /**
  *
  */
 public function next()
 {
     return RandomNumberGenerator::next();
 }
Пример #10
0
 /**
  * Main program.
  *
  * @param array $args Command-line arguments.
  * @return integer Zero on success; non-zero on failure.
  */
 public static function main($args)
 {
     printf("RandomNumberGenerator main program.\n");
     $status = 0;
     RandomNumberGenerator::setSeed(1);
     for ($i = 0; $i < 10; ++$i) {
         printf("%.15f\n", RandomNumberGenerator::next());
     }
     return $status;
 }
Пример #11
0
 /**
  * Computes the value of pi.
  * Uses a monte-carlo algorithm.
  *
  * @param integer $trials The number of trials to be done.
  * @return float The value of pi.
  */
 public static function computePi($trials)
 {
     $hits = 0;
     for ($i = 0; $i < $trials; ++$i) {
         $x = RandomNumberGenerator::next();
         $y = RandomNumberGenerator::next();
         if ($x * $x + $y * $y < 1.0) {
             ++$hits;
         }
     }
     return 4.0 * $hits / $trials;
 }
Пример #12
0
 /**
  * Returns the next random number.
  *
  * @return float The next random number.
  */
 public function next()
 {
     return -$this->mu * log(RandomNumberGenerator::next());
 }
Пример #13
0
 /**
  * Returns the next random sample.
  *
  * @return float The next sample.
  */
 public function next()
 {
     return $this->u + ($this->v - $this->u) * RandomNumberGenerator::next();
 }
Пример #14
0
function getConfirmHash()
{
    $random = new RandomNumberGenerator();
    $confirm_hash = $random->getNumber();
    $user_manager = UserManager::instance();
    $check_valid = false;
    while (!$check_valid) {
        $confirm_hash = $random->getNumber();
        $check_valid = $user_manager->getUserByConfirmHash($confirm_hash) === null;
    }
    return $confirm_hash;
}
Пример #15
0
 private function generateRandomToken()
 {
     return $this->random_number_generator->getNumber();
 }