Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Аватар для Быдлокодер
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.12.2015
    Сообщений
    40
    Репутация:
    0 ±

    Шифрование паролей

    Здраствуйте, прикручиваю UCP к серверу, и мне нужно убрать шифрование паролей (плагин whirlpool)
    Останусь от всей души благодарен!


    АСТАРОЖНА!! АХТУНГ!! МНОГА КОДА!!
      Открыть/закрыть
    PHP код:
    SQL_AttemptLogin(playerid, const password[])
    {
        new
            
    query[300],
            
    buffer[129];

        
    WP_Hash(buffersizeof(buffer), password);

        
    format(querysizeof(query), "SELECT `ID` FROM `accounts` WHERE `Username` = '%s' AND `Password` = '%s'"PlayerData[playerid][pUsername], buffer);
        
    mysql_tquery(g_iHandlequery"OnQueryFinished""dd"playeridTHREAD_LOGIN);
    }

    //////////////////////////////////////////////////////////
    Dialog:NewPass(playeridresponselistiteminputtext[])
    {
        if (
    response)
        {
            if (
    isnull(inputtext))
                return 
    Dialog_Show(playeridNewPassDIALOG_STYLE_PASSWORD"Ââåäè íîâèé ïàðîëü""Áóäü ëàñêà, ââåäè íîâèé ïàðîëü.\n\nÇàì³òêà: Áóäü ëàñêà, âèêîðèñòîâóé ñêëàäíèé, áåçïå÷íèé ïàðîëü.""Çì³íèòè""³äì³íà");

            static
                
    buffer[129],
                
    query[256];

            
    WP_Hash(buffersizeof(buffer), inputtext);
            
    inputtext[0] = '\0';

            
    format(querysizeof(query), "UPDATE `accounts` SET `Password` = '%s' WHERE `Username` = '%s'"bufferPlayerData[playerid][pUsername]);
            
    mysql_tquery(g_iHandlequery);

            
    SendServerMessage(playerid"Òè çì³íèâ ñâ³é ïàðîëü.");
        }
        return 
    1;
    }

    /////////////////////////////////////////////////////////////////////
    Dialog:ChangePassword(playeridresponselistiteminputtext[])
    {
        if (
    response)
        {
            if (
    isnull(inputtext))
                return 
    cmd_changepass(playerid"\1");

            static
                
    buffer[129],
                
    query[256];

            
    WP_Hash(buffersizeof(buffer), inputtext);
            
    inputtext[0] = '\0';

            
    format(querysizeof(query), "SELECT `Password` FROM `accounts` WHERE `Username` = '%s' AND `Password` = '%s'"PlayerData[playerid][pUsername], buffer);
            
    mysql_tquery(g_iHandlequery"OnQueryFinished""dd"playeridTHREAD_VERIFY_PASS);
        }
        return 
    1;


    И вот, native
    PHP код:
    native WP_Hash(buffer[], len, const str[]); 

  2. #2
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Когда же вы запомните, что шифрование и хеширование это разные вещи?

    По теме: вам не понадобится массив "buffer" и функция "WP_Hash". Вместо массива "buffer" теперь используйте "inputtext". А также не нужно "очищать" inputtext.

  3. Пользователь сказал cпасибо:
    Быдлокодер (18.04.2016)
  4. #3
    Аватар для TheMallard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    А еще лучше не убирать, а заменить на SHA256!

  5. Пользователь сказал cпасибо:
    Быдлокодер (18.04.2016)
  6. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    В базе уже есть аккаунты? Если да, то, как уже предложили выше, можно инициировать переход на SHA-256 (в чём вообще профит хранить пароли в чистом виде?): добавляете в БД ещё одно поле для хеша SHA-256, но поле со старым хешем не удаляете. При авторизации введённый игроком пароль сверяется с SHA-256, если он верный - пароль (в исходном виде, естественно) шифруется с помощью Whirlpool и записывается в новое поле в аккаунте.
    Спустя некоторое время поле с SHA-256 удаляете, а пароль сверяете с хешом Whirlpool. Те же аккаунты, которые не застали момента перехода с SHA-256 на Whirlpool либо удаляете за неактив, либо перемещаете их в отдельную таблицу, где ещё есть поле с SHA-256 и восстанавливаете вручную по заявкам.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  7. Пользователь сказал cпасибо:
    Быдлокодер (18.04.2016)
  8. #5
    Аватар для Быдлокодер
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.12.2015
    Сообщений
    40
    Репутация:
    0 ±
    Аккаунтов ещё нет, что делать в этом случае ?
    Можете показать на примере (коде) ?

    Спасибо!

  9. #6
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Быдлокодер Посмотреть сообщение
    Аккаунтов ещё нет, что делать в этом случае ?
    Можете показать на примере (коде) ?

    Спасибо!
    А что показывать-то? Если аккаунтов нет, то достаточно просто убрать вызов WP_Hash. Всё.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  10. Пользователь сказал cпасибо:
    Быдлокодер (18.04.2016)
  11. #7
    Аватар для Быдлокодер
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.12.2015
    Сообщений
    40
    Репутация:
    0 ±
    Убрал вызов, ошибки:

      Открыть/закрыть
    PHP код:
    C:\Documents and Settings\Admin-PC\Ìîè äîêóìåíòû\\mod\gamemodes\roleplay.pwn(1709) : error 017undefined symbol "inputtext"
    C:\Documents and Settings\Admin-PC\Ìîè äîêóìåíòû\\mod\gamemodes\roleplay.pwn(1706) : warning 203symbol is never used"password"
    C:\Documents and Settings\Admin-PC\Ìîè äîêóìåíòû\s\mod\gamemodes\roleplay.pwn(1724) : error 017undefined symbol "buffer"
    C:\Documents and Settings\Admin-PC\Ìîè äîêóìåíòû\\mod\gamemodes\roleplay.pwn(1721) : warning 203symbol is never used"password"
    Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase
    2 Errors



    Строки:
    1706:
    PHP код:
    SQL_CreateAccount(const username[], const password[]) 
    1709:
    PHP код:
    format(querysizeof(query), "INSERT INTO `accounts` (`Username`, `Password`, `RegisterDate`, `LoginDate`) VALUES('%s', '%s', '%s', '%s')"usernameinputtextReturnDate(), ReturnDate()); 
    1721:
    PHP код:
    SQL_AttemptLogin(playerid, const password[]) 
    1724:
    PHP код:
    format(querysizeof(query), "SELECT `ID` FROM `accounts` WHERE `Username` = '%s' AND `Password` = '%s'"PlayerData[playerid][pUsername], buffer); 

  12. #8
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Заново код весь показывайте.

  13. Пользователь сказал cпасибо:
    Быдлокодер (18.04.2016)
  14. #9
    Аватар для Быдлокодер
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.12.2015
    Сообщений
    40
    Репутация:
    0 ±
    Вот:
      Открыть/закрыть
    PHP код:
    Dialog:NewPass(playeridresponselistiteminputtext[])
    {
        if (
    response)
        {
            if (
    isnull(inputtext))
                return 
    Dialog_Show(playeridNewPassDIALOG_STYLE_PASSWORD"Ââåäè íîâèé ïàðîëü""Áóäü ëàñêà, ââåäè íîâèé ïàðîëü.\n\nÇàì³òêà: Áóäü ëàñêà, âèêîðèñòîâóé ñêëàäíèé, áåçïå÷íèé ïàðîëü.""Çì³íèòè""³äì³íà");

            static
                
    buffer[129],
                
    query[256];

            
    inputtext[0] = '\0';

            
    format(querysizeof(query), "UPDATE `accounts` SET `Password` = '%s' WHERE `Username` = '%s'"bufferPlayerData[playerid][pUsername]);
            
    mysql_tquery(g_iHandlequery);

            
    SendServerMessage(playerid"Òè çì³íèâ ñâ³é ïàðîëü.");
        }
        return 
    1;
    }

    Dialog:ChangePassword(playeridresponselistiteminputtext[])
    {
        if (
    response)
        {
            if (
    isnull(inputtext))
                return 
    cmd_changepass(playerid"\1");

            static
                
    buffer[129],
                
    query[256];

            
    inputtext[0] = '\0';

            
    format(querysizeof(query), "SELECT `Password` FROM `accounts` WHERE `Username` = '%s' AND `Password` = '%s'"PlayerData[playerid][pUsername], buffer);
            
    mysql_tquery(g_iHandlequery"OnQueryFinished""dd"playeridTHREAD_VERIFY_PASS);
        }
        return 
    1;


    И вот:
      Открыть/закрыть

    PHP код:
    SQL_CreateAccount(const username[], const password[])
    {
        new 
    query[512];
        
    format(querysizeof(query), "INSERT INTO `accounts` (`Username`, `Password`, `RegisterDate`, `LoginDate`) VALUES('%s', '%s', '%s', '%s')"usernameinputtextReturnDate(), ReturnDate());
        
    mysql_tquery(g_iHandlequery);
    }

    SQL_CheckAccount(playerid)
    {
        new 
    query[128];

        
    format(querysizeof(query), "SELECT `Username` FROM `characters` WHERE `Character` = '%s'"ReturnName(playerid));
        
    mysql_tquery(g_iHandlequery"OnQueryFinished""dd"playeridTHREAD_FIND_USERNAME);
    }

    SQL_AttemptLogin(playerid, const password[])
    {
        new 
    query[300];
        
    format(querysizeof(query), "SELECT `ID` FROM `accounts` WHERE `Username` = '%s' AND `Password` = '%s'"PlayerData[playerid][pUsername], buffer);
        
    mysql_tquery(g_iHandlequery"OnQueryFinished""dd"playeridTHREAD_LOGIN);



    Спасибо!

  15. #10
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Массив "buffer" - не нужен. Я писал же об этом.
    И это:
    PHP код:
    inputtext[0] = '\0'
    - не нужно.

  16. Пользователь сказал cпасибо:
    Быдлокодер (18.04.2016)
 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •