Файл: gamele.ru/includes/functions/HonorGates.php
Строк: 127
<?php
function unique_id(){
return substr(md5(rand().'_'.microtime().'_'.rand()), rand(0, 15), 16);
}
function _hash_gensalt_private($input, &$itoa64, $iteration_count_log2 = 6){
if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31){
$iteration_count_log2 = 8;
}
$output = '$H$';
$output .= $itoa64[min($iteration_count_log2 + ((PHP_VERSION >= 5) ? 5 : 3), 30)];
$output .= _hash_encode64($input, 6, $itoa64); return $output;
}
function _hash_encode64($input, $count, &$itoa64){
$output = '';
$i = 0;
do{
$value = ord($input[$i++]);
$output .= $itoa64[$value & 0x3f];
if ($i < $count){
$value |= ord($input[$i]) << 8;
}
$output .= $itoa64[($value >> 6) & 0x3f];
if ($i++ >= $count){
break;
}
if ($i < $count){
$value |= ord($input[$i]) << 16;
}
$output .= $itoa64[($value >> 12) & 0x3f];
if ($i++ >= $count){
break;
}
$output .= $itoa64[($value >> 18) & 0x3f];
}
while ($i < $count);
return $output;
}
function _hash_crypt_private($password, $setting, &$itoa64){
$output = '*';
// Check for correct hash
if (substr($setting, 0, 3) != '$H$'){
return $output;
}
$count_log2 = strpos($itoa64, $setting[3]);
if ($count_log2 < 7 || $count_log2 > 30){
return $output;
}
$count = 1 << $count_log2;
$salt = substr($setting, 4, 8);
if (strlen($salt) != 8){
return $output;
}
if (PHP_VERSION >= 5){
$hash = md5($salt . $password, true);
do{
$hash = md5($hash . $password, true);
}
while (--$count);
}else{
$hash = pack('H*', md5($salt . $password));
do{
$hash = pack('H*', md5($hash . $password));
}
while (--$count);
}
$output = substr($setting, 0, 12);
$output .= _hash_encode64($hash, 16, $itoa64);
return $output;
}
function phpbb_hash($password){
$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$random_state = unique_id();
$random = '';
$count = 6;
if (($fh = @fopen('/dev/urandom', 'rb'))){
$random = fread($fh, $count);
fclose($fh);
}
if (strlen($random) < $count){
$random = '';
for ($i = 0; $i < $count; $i += 16){
$random_state = md5(unique_id() . $random_state);
$random .= pack('H*', md5($random_state));
}
$random = substr($random, 0, $count);
}
$hash = _hash_crypt_private($password, _hash_gensalt_private($random, $itoa64), $itoa64);
if (strlen($hash) == 34){
return $hash;
}
return md5($password);
}
function phpbb_check_hash($password, $hash){
$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
if (strlen($hash) == 34){
return (_hash_crypt_private($password, $hash, $itoa64) === $hash) ? true : false;
}
return (md5($password) === $hash) ? true : false;
}
if(!empty($RegForm)){
mysql_query("INSERT INTO `Guild_Forum`.`phpbb_users` (`username`,`username_clean`,`user_email`,`user_email_hash`,`user_password`,`user_regdate`,`user_form_salt`,`group_id`, `user_permissions`,`user_ip`) VALUES ('".htmlspecialchars($_POST['nickname'])."','".strtolower(htmlspecialchars($_POST['nickname']))."','".htmlspecialchars($_POST['email'])."','".crc32(strtolower(htmlspecialchars($_POST['email'])) . strlen(htmlspecialchars($_POST['email'])))."','".phpbb_hash($_POST['psw_f'])."','".time()."','".unique_id()."','2','','".$_SERVER['REMOTE_ADDR']."');");
$LastForumID = mysql_insert_id();
mysql_query("INSERT INTO `Guild_Forum`.`phpbb_user_group` (`user_id`,`user_pending`,`group_id`) VALUES ('".$LastForumID."','0','2');");
mysql_query("UPDATE `Guild_Forum`.`phpbb_config` SET `config_value`=`config_value`+'1' WHERE `config_name`='num_users'");
mysql_query("UPDATE `Guild_Forum`.`phpbb_config` SET `config_value`='".$LastForumID."' where `config_name`='newest_user_id'");
mysql_query("UPDATE `Guild_Forum`.`phpbb_config` SET `config_value`='".htmlspecialchars($_POST['nickname'])."' where `config_name`='newest_username'");
}