A super easy PHP Framework for web development! https://github.com/exacti/phacil-framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.1 KiB

6 years ago
<?php
/**
* @param int $length
* @return string|false
* @throws Exception
*/
6 years ago
function token($length = 32) {
if(!isset($length) || intval($length) <= 8 ){
$length = 32;
}
if (function_exists('openssl_random_pseudo_bytes')) {
$token = bin2hex(openssl_random_pseudo_bytes($length));
} elseif (function_exists('random_bytes')) {
$token = bin2hex(random_bytes($length));
} elseif (function_exists('mcrypt_create_iv') && phpversion() < '7.1') {
$token = bin2hex(mcrypt_create_iv($length, MCRYPT_DEV_URANDOM));
} else {
$token = md5(rand(0, 4000).time());
}
return substr($token, -$length, $length);
6 years ago
}
if (!function_exists('hash_equals')) {
function hash_equals($known_string, $user_string) {
$known_string = (string)$known_string;
$user_string = (string)$user_string;
if (strlen($known_string) != strlen($user_string)) {
return false;
} else {
$res = $known_string ^ $user_string;
$ret = 0;
for ($i = strlen($res) - 1; $i >= 0; $i--) $ret |= ord($res[$i]);
return !$ret;
}
}
}