ok
Direktori : /home2/selectio/www/3-idiots/vendor/unicodeveloper/laravel-paystack/src/ |
Current File : /home2/selectio/www/3-idiots/vendor/unicodeveloper/laravel-paystack/src/TransRef.php |
<?php /* * This file is part of the Laravel Paystack package. * * (c) Prosper Otemuyiwa <prosperotemuyiwa@gmail.com> * * Source http://stackoverflow.com/a/13733588/179104 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Unicodeveloper\Paystack; class TransRef { /** * Get the pool to use based on the type of prefix hash * @param string $type * @return string */ private static function getPool($type = 'alnum') { switch ($type) { case 'alnum': $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; break; case 'alpha': $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; break; case 'hexdec': $pool = '0123456789abcdef'; break; case 'numeric': $pool = '0123456789'; break; case 'nozero': $pool = '123456789'; break; case 'distinct': $pool = '2345679ACDEFHJKLMNPRSTUVWXYZ'; break; default: $pool = (string) $type; break; } return $pool; } /** * Generate a random secure crypt figure * @param integer $min * @param integer $max * @return integer */ private static function secureCrypt($min, $max) { $range = $max - $min; if ($range < 0) { return $min; // not so random... } $log = log($range, 2); $bytes = (int) ($log / 8) + 1; // length in bytes $bits = (int) $log + 1; // length in bits $filter = (int) (1 << $bits) - 1; // set all lower bits to 1 do { $rnd = hexdec(bin2hex(openssl_random_pseudo_bytes($bytes))); $rnd = $rnd & $filter; // discard irrelevant bits } while ($rnd >= $range); return $min + $rnd; } /** * Finally, generate a hashed token * @param integer $length * @return string */ public static function getHashedToken($length = 25) { $token = ""; $max = strlen(static::getPool()); for ($i = 0; $i < $length; $i++) { $token .= static::getPool()[static::secureCrypt(0, $max)]; } return $token; } }