Хеш пароля
#1

Всем привет вообщем хочу сделать авторизацию на сервере через базу данных сайта на движке IPS 4.0 пароль в базе храниться в таком виде

PHP код:
77d583bbc2823975cfb1ec68ba6fb7a 
кто знает как на со стороны сервера отследить правильность пароля, т.е вводимое значение превратить в такой же вид и сверить с базой.
Reply
#2

https://www.invisionpower.com/suppor...n-ipboard-r130
это?
Reply
#3

Обычный MD5 хэш, YSI в помощь.
Reply
#4

Спасибо попробую сначала обычный md5 но подсказывает тутор отправленный выше что не все так просто)
Reply
#5

Что бы сравнивать со значением в базе и не мучиться с плагинами в MySQL есть функция MD5().
Reply
#6

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Что бы сравнивать со значением в базе и не мучиться с плагинами в MySQL есть функция MD5().
Спасибо, но не мог бы ты помочь построить запрос правильно по такой схеме

PHP код:
$hash md5md5$salt ) . md5$password ) ); 
PHP код:
Passing query SELECT `member_idFROM `core_membersWHERE `name` = 'Admin' AND `members_pass_hash` = MD5(MD5('0JTU7XJyyf56U2Rk8UcA8J').MD5('vfsdfgd1337')) | dd
[04:34:13CMySQLHandler::ProcessQueryThread() - Error will be triggered to OnQueryError() 
Reply
#7

pawn Код:
format(string, sizeof(string), "SELECT member_id FROM core_members WHERE name= '%s' AND members_pass_hash=MD5(CONCAT(MD5('%s'),MD5('%s')))", name, salt, password);
Если запрос вернул хоть одну строку, значит пользователь есть и пароль верный, если не одной, значит неверное или имя или пароль.
Reply
#8

Пока не удалось достигнуть вершины.

PHP код:
    format(querysizeof(query), "SELECT `member_id` FROM `core_members` WHERE `name` = '%s' AND `members_pass_hash` = MD5(CONCAT(MD5('%s'), '.', MD5('%s')))"GetPlayerNameEx(playerid), PlayerData[playerid][pPassSalt], password);
    
mysql_function_query(connectionHandlequerytrue"OnQueryFinished""dd"playeridTHREAD_LOGIN); 
PHP код:
        case THREAD_LOGIN:
           {
            
cache_get_data(rowsfieldsconnectionHandle);
            if (!
rows)
            {
                 print(
"Пароль не верный");
            }
            else
            {
                print(
"Пароль верный");
            }
        } 
В базе пароль выглядит так:
Как то можно отследить конечный формат запроса принятый базой данной.

PHP код:
$2a$13$0JTU7XJyyf56U2Rk8UcA8.6/HnivemOUSjgfi2LX3hZ.c3prn0wFS 
PHP код:
ProcessQueryThread(OnQueryFinished) - Query was successful. (SELECT `member_idFROM `core_membersWHERE `name` = 'Admin' AND `members_pass_hash` = MD5(CONCAT(MD5('0JTU7XJyyf56U2Rk8UcA8J'), '.'MD5('vfrfhjd1337')))) 
Reply
#9

У тебя неверный код создания паролей, потому что это
Код:
$2a$13$0JTU7XJyyf56U2Rk8UcA8.6/HnivemOUSjgfi2LX3hZ.c3prn0wFS
не md5 хэш.
Reply
#10

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
У тебя неверный код создания паролей, потому что это
Код:
$2a$13$0JTU7XJyyf56U2Rk8UcA8.6/HnivemOUSjgfi2LX3hZ.c3prn0wFS
не md5 хэш.
Следую из статьи с офф форума IP.Board это md5 хэш.
$2a$13$0JTU7XJyyf56U2Rk8UcA8.6/HnivemOUSjgfi2LX3hZ.c3prn0wFS - это из members_pass_hash

PHP код:
IP.Board stores members' passwords as a salted hash. Both the hash and the salt are stored in the database in the members table as members_pass_hash and members_pass_salt, respectively.
The hash is the md5 sum of the md5 sum of the salt concatenated to the md5 sum of the plaintext password. Expressed in PHP code, this is as follows:
$hash = md5( md5( $salt ) . md5( $password ) );
Where:
    $hash is the value stored in the database column members_pass_hash.
    $salt is the value stored in the database column members_pass_salt.
    $password is the plaintext password.
The salt, is a string of 5 random characters including letters, numbers and symbols (specifically, ASCII characters 33-126, excluding 92). You can easily generate a salt using the IPSMember::generatePasswordSalt() method. 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)