Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function genRandomBytes($length = 16)
- {
- $sslStr = '';
- if (
- function_exists('openssl_random_pseudo_bytes')
- && (version_compare(PHP_VERSION, '5.3.4') >= 0
- || substr(PHP_OS, 0, 3) !== 'WIN'
- )
- )
- {
- $sslStr = openssl_random_pseudo_bytes($length, $strong);
- if ($strong)
- {
- return $sslStr;
- }
- }
- $bitsPerRound = 2;
- $maxTimeMicro = 400;
- $shaHashLength = 20;
- $randomStr = '';
- $total = $length;
- // Check if we can use /dev/urandom.
- $urandom = false;
- $handle = null;
- if (function_exists('stream_set_read_buffer') && @is_readable('/dev/urandom'))
- {
- $handle = @fopen('/dev/urandom', 'rb');
- if ($handle)
- {
- $urandom = true;
- }
- }
- while ($length > strlen($randomStr))
- {
- $bytes = ($total > $shaHashLength)? $shaHashLength : $total;
- $total -= $bytes;
- $entropy = rand() . uniqid(mt_rand(), true) . $sslStr;
- $entropy .= implode('', @fstat(fopen( __FILE__, 'r')));
- $entropy .= memory_get_usage();
- $sslStr = '';
- if ($urandom)
- {
- stream_set_read_buffer($handle, 0);
- $entropy .= @fread($handle, $bytes);
- }
- else
- {
- $samples = 3;
- $duration = 0;
- for ($pass = 0; $pass < $samples; ++$pass)
- {
- $microStart = microtime(true) * 1000000;
- $hash = sha1(mt_rand(), true);
- for ($count = 0; $count < 50; ++$count)
- {
- $hash = sha1($hash, true);
- }
- $microEnd = microtime(true) * 1000000;
- $entropy .= $microStart . $microEnd;
- if ($microStart > $microEnd) {
- $microEnd += 1000000;
- }
- $duration += $microEnd - $microStart;
- }
- $duration = $duration / $samples;
- $rounds = (int)(($maxTimeMicro / $duration) * 50);
- $iter = $bytes * (int) ceil(8 / $bitsPerRound);
- for ($pass = 0; $pass < $iter; ++$pass)
- {
- $microStart = microtime(true);
- $hash = sha1(mt_rand(), true);
- for ($count = 0; $count < $rounds; ++$count)
- {
- $hash = sha1($hash, true);
- }
- $entropy .= $microStart . microtime(true);
- }
- }
- $randomStr .= sha1($entropy, true);
- }
- if ($urandom)
- {
- @fclose($handle);
- }
- return substr($randomStr, 0, $length);
- }
- function genRandomPassword($length = 8)
- {
- $salt = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- $base = strlen($salt);
- $makepass = '';
- $random = SnCrypt::genRandomBytes($length + 1);
- $shift = ord($random[0]);
- for ($i = 1; $i <= $length; ++$i)
- {
- $makepass .= $salt[($shift + ord($random[$i])) % $base];
- $shift += ord($random[$i]);
- }
- return $makepass;
- }
- function getCryptedPassword($plaintext, $salt = '')
- {
- $encrypted = ($salt) ? md5($plaintext . $salt) : md5($plaintext);
- return $encrypted;
- }
- // write here your password:
- $pw = "jelszooooo";
- // we echo it:
- $salt = genRandomPassword(32);
- $crypt = getCryptedPassword($pw, $salt);
- echo $crypt . ':' . $salt;
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement