Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 06/24/2018 in all areas

  1. 1 point
    С помощью данного класса можно реализовать внутриигровую + форумную регистрацию, т.е юзать один аккаунт, иногда это очень удобно. Функция, присутствующие в классе, их всего три: generateSalt() - Генерирует ключ шифрования legacyEscape() - Необходимо для старых версий IP.Board encryptedPassword() - Шифрование пароля, именно эту функцию мы и будем разбирать. В функцию encryptedPassword передаются два параметра, пароль в чистом виде и ключ шифрования, так называемая "соль". Далее функция сложит все данные в одну строчку, предварительно установив между паролем и солью семь символов ($2a$13$), примерно получится вот так: пароль$2a$13$соль Далее функция хэширует с помощью стандартного алгоритма UNIX, получается вот так: $2a$13$h3jQKRpUAhlpwawzMrmbhu3mxlaVM9YPNtlyjs5QvYMhY9q0teqJm admin$2a$13$h3jQKRpUAhlpwawzMrmbhz Как вариант можно пропатчить IPS\Member\Member.php и сделать единую регистрацию с форума, а можно юзать этот класс и внедрить уже в вашу серверную обвязку регистрацию и авторизацию. Сам класс для работы на вашей обвязке: class ips { public function generateSalt() { $salt = ''; for ( $i=0; $i<22; $i++ ) { do { $chr = rand( 48, 122 ); } while ( in_array( $chr, range( 58, 64 ) ) or in_array( $chr, range( 91, 96 ) ) ); $salt .= chr( $chr ); } return $salt; } public static function legacyEscape( $val ) { $val = str_replace( "&" , "&" , $val ); $val = str_replace( "<!--" , "<!--" , $val ); $val = str_replace( "-->" , "-->" , $val ); $val = str_ireplace( "<script" , "<script" , $val ); $val = str_replace( ">" , ">" , $val ); $val = str_replace( "<" , "<" , $val ); $val = str_replace( '"' , """ , $val ); $val = str_replace( "\n" , "<br />" , $val ); $val = str_replace( "$" , "$" , $val ); $val = str_replace( "!" , "!" , $val ); $val = str_replace( "'" , "'" , $val ); $val = str_replace( "\\" , "\" , $val ); return $val; } public function encryptedPassword($password, $salt) { if (mb_strlen($salt) === 22) { return crypt($password,'$2a$13$'.$salt); } else { return md5(md5($salt).md5($this->legacyEscape($password))); } } }
  • Newsletter

    Want to keep up to date with all our latest news and information?
    Sign Up
×
×
  • Create New...