M
monu
Гость
Столкнулся с проблемой, необходимо реализовать интеграцию одной игры с форумом рhpbb на таком примере уже реализованнымдля вордпрес: function hash_wordpress() { global $realPass, $postPass; $cryptPass = false; $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; $count_log2 = strpos($itoa64, $realPass[3]); $count = 1 << $count_log2; $salt = substr($realPass, 4, 8); $input = md5($salt . $postPass, TRUE); do $input = md5($input . $postPass, TRUE); while (--$count); $output = substr($realPass, 0, 12); $count = 16; $i = 0; do { $value = ord($input[$i++]); $cryptPass .= $itoa64[$value & 0x3f]; if ($i < $count) $value |= ord($input[$i]) << 8; $cryptPass .= $itoa64[($value >> 6) & 0x3f]; if ($i++ >= $count) break; if ($i < $count) $value |= ord($input[$i]) << 16; $cryptPass .= $itoa64[($value >> 12) & 0x3f]; if ($i++ >= $count) break; $cryptPass .= $itoa64[($value >> 18) & 0x3f]; } while ($i < $count); $cryptPass = $output . $cryptPass; return $cryptPass; }для дле global $postPass; $cryptPass = false; $cryptPass = md5(md5($postPass)); return $cryptPass;Нашёл в includes/functions.php строки отвечающие за шифрование* Hash the password*/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);}/*** Check for correct password** @param string $password The password in plain text* @param string $hash The stored password hash** @return bool Returns true if the password is correct, false if not.*/function phpbb_check_hash($password, $hash){ if (strlen($password) > 4096) { // If the password is too huge, we will simply reject it // and not let the server try to hash it. return false; } $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; if (strlen($hash) == 34) { return (_hash_crypt_private($password, $hash, $itoa64) === $hash) ? true : false; } return (md5($password) === $hash) ? true : false;}/*** Generate salt for hash generation*/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;}/*** Encode hash*/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;}/**Но как не пробывал не помогает.