Advertisement
pushrbx

Joomla Pw generator

Mar 12th, 2013
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.82 KB | None | 0 0
  1. <?php
  2. function genRandomBytes($length = 16)
  3. {
  4.     $sslStr = '';
  5.     if (
  6.             function_exists('openssl_random_pseudo_bytes')
  7.             && (version_compare(PHP_VERSION, '5.3.4') >= 0
  8.                     || substr(PHP_OS, 0, 3) !== 'WIN'
  9.             )
  10.     )
  11.     {
  12.         $sslStr = openssl_random_pseudo_bytes($length, $strong);
  13.         if ($strong)
  14.         {
  15.             return $sslStr;
  16.         }
  17.     }
  18.  
  19.     $bitsPerRound = 2;
  20.     $maxTimeMicro = 400;
  21.     $shaHashLength = 20;
  22.     $randomStr = '';
  23.     $total = $length;
  24.  
  25.     // Check if we can use /dev/urandom.
  26.     $urandom = false;
  27.     $handle = null;
  28.     if (function_exists('stream_set_read_buffer') && @is_readable('/dev/urandom'))
  29.     {
  30.         $handle = @fopen('/dev/urandom', 'rb');
  31.         if ($handle)
  32.         {
  33.             $urandom = true;
  34.         }
  35.     }
  36.  
  37.     while ($length > strlen($randomStr))
  38.     {
  39.         $bytes = ($total > $shaHashLength)? $shaHashLength : $total;
  40.         $total -= $bytes;
  41.  
  42.         $entropy = rand() . uniqid(mt_rand(), true) . $sslStr;
  43.         $entropy .= implode('', @fstat(fopen( __FILE__, 'r')));
  44.         $entropy .= memory_get_usage();
  45.         $sslStr = '';
  46.         if ($urandom)
  47.         {
  48.             stream_set_read_buffer($handle, 0);
  49.             $entropy .= @fread($handle, $bytes);
  50.         }
  51.         else
  52.         {
  53.  
  54.             $samples = 3;
  55.             $duration = 0;
  56.             for ($pass = 0; $pass < $samples; ++$pass)
  57.             {
  58.                 $microStart = microtime(true) * 1000000;
  59.                 $hash = sha1(mt_rand(), true);
  60.                 for ($count = 0; $count < 50; ++$count)
  61.                 {
  62.                     $hash = sha1($hash, true);
  63.                 }
  64.                 $microEnd = microtime(true) * 1000000;
  65.                 $entropy .= $microStart . $microEnd;
  66.                 if ($microStart > $microEnd) {
  67.                     $microEnd += 1000000;
  68.                 }
  69.                 $duration += $microEnd - $microStart;
  70.             }
  71.             $duration = $duration / $samples;
  72.             $rounds = (int)(($maxTimeMicro / $duration) * 50);
  73.             $iter = $bytes * (int) ceil(8 / $bitsPerRound);
  74.             for ($pass = 0; $pass < $iter; ++$pass)
  75.             {
  76.                 $microStart = microtime(true);
  77.                 $hash = sha1(mt_rand(), true);
  78.                 for ($count = 0; $count < $rounds; ++$count)
  79.                 {
  80.                     $hash = sha1($hash, true);
  81.                 }
  82.                 $entropy .= $microStart . microtime(true);
  83.             }
  84.         }
  85.  
  86.         $randomStr .= sha1($entropy, true);
  87.     }
  88.  
  89.     if ($urandom)
  90.     {
  91.         @fclose($handle);
  92.     }
  93.  
  94.     return substr($randomStr, 0, $length);
  95. }
  96. function genRandomPassword($length = 8)
  97. {
  98.     $salt = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  99.     $base = strlen($salt);
  100.     $makepass = '';
  101.  
  102.     $random = SnCrypt::genRandomBytes($length + 1);
  103.     $shift = ord($random[0]);
  104.     for ($i = 1; $i <= $length; ++$i)
  105.     {
  106.         $makepass .= $salt[($shift + ord($random[$i])) % $base];
  107.         $shift += ord($random[$i]);
  108.     }
  109.  
  110.     return $makepass;
  111. }
  112. function getCryptedPassword($plaintext, $salt = '')
  113. {
  114.     $encrypted = ($salt) ? md5($plaintext . $salt) : md5($plaintext);
  115.     return $encrypted;
  116. }
  117.  
  118. // write here your password:
  119. $pw = "jelszooooo";
  120.  
  121. // we echo it:
  122. $salt = genRandomPassword(32);
  123. $crypt = getCryptedPassword($pw, $salt);
  124. echo $crypt . ':' . $salt;
  125. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement