bCrypt Migration...
#1

So I moved away from Whirlpool today.... well atleast I am trying to....
#include <bcrypt>

bCrypt is working, sort of... I can create an account but logging back in is the issue, however the hash has stored correctly in db.
PHP Code:
enum E_PLAYERS
{
    
Name[MAX_PLAYER_NAME],
    
Password[BCRYPT_HASH_LENGTH// bCrypt Hashingis a 61-character-long string (60 + null terminator), which is also defined as constant BCRYPT_HASH_LENGTH.
};
new 
Player[MAX_PLAYERS][E_PLAYERS]; 
PHP Code:
ONPLAYERCONNECT
    
new query[84];
    new 
pname[MAX_PLAYER_NAME+1];
    
GetPlayerName(playeridpnamesizeof(pname));
    
mysql_format(g_SQLquerysizeof(query), "SELECT * FROM `players` WHERE `username` = '%e' LIMIT 1"pname);
    
mysql_tquery(g_SQLquery"OnPlayerJoin""dd"playeridg_MysqlRaceCheck[playerid]); 
PHP Code:
ONPLAYERJOIN
forward OnPlayerJoin
(playeridrace_check);
public 
OnPlayerJoin(playeridrace_check)
{
    if (
race_check != g_MysqlRaceCheck[playerid]) return Kick(playerid);
    new 
string[256];
    new 
pname[MAX_PLAYER_NAME+1];
     
GetPlayerName(playeridpnamesizeof(pname));
    if(
cache_num_rows() > 0)
    {
        
cache_get_value(0"password"Player[playerid][Password], 61);
        
Player[playerid][Cache_ID] = cache_save();
        
format(stringsizeof string"This account (%s) is registered. Please login by entering your password in the field below:"pname);
        
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Login"string"Login""Abort");
    }
    else
    {
        
format(stringsizeof string"Welcome %s, you can register by entering your password in the field below:"pname);
        
ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_PASSWORD"Registration"string"Register""Abort");
    }
    return 
1;

PHP Code:
ONDIALOGRESPONSE
case DIALOG_LOGIN:
        {
            new 
query[128], pname[MAX_PLAYER_NAME];
            
GetPlayerName(playeridpnamesizeof(pname));
            
SetPVarString(playerid"Unhashed_Pass",inputtext);
            
            
mysql_format(g_SQLquerysizeof(query), "SELECT password from `players` WHERE username = '%e'"pname);
            
mysql_tquery(g_SQLquery"OnPlayerLogin""d"playerid);
        }
        case 
DIALOG_REGISTER:
        {
            if(
response)
            {
                if(
strlen(inputtext) <= 5) return ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_PASSWORD"Registration""Your password must be longer than 5 characters!\nPlease enter your password in the field below:""Register""Abort");
                
bcrypt_hash(inputtext12"OnPassHash""d"playerid);
            }
        } 
PHP Code:
forward OnPlayerLogin(playerid);
public 
OnPlayerLogin(playerid)
{
    new 
pPass[61], unhashed_pass[61];
    
GetPVarString(playerid"Unhashed_Pass",unhashed_pass,sizeof(unhashed_pass));
    if(
cache_num_rows())
    {
        
cache_get_value_name(0"password"Player[playerid][Password], 60);
        
bcrypt_check(unhashed_passpPass"OnPassCheck""dd",playeridPlayer[playerid][Password]);
    }
    else 
printf("ERROR: OnPlayerLogin, cant Cache_Num_Rows!");
    return 
1;
}
forward OnPassCheck(playeridDBID);
public 
OnPassCheck(playeridDBID)
{
    if(
bcrypt_is_equal())
    {
        
SpawnPlayer(playerid);
        return 
1;
    }
    else
    {
        if(
Player[playerid][LoginAttempts] >= 3)
        {
            
ShowPlayerDialog(playeridDIALOG_UNUSEDDIALOG_STYLE_MSGBOX"Login""You've mistyped your password too often (3 times).""Okay""");
            return 
1;
        }
        else  return 
ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Login""Wrong password!\nPlease enter your password in the field below:""Login""Abort");
    }
}
forward OnPassHash(playerid);
public 
OnPassHash(playerid)
{
    new 
pass[BCRYPT_HASH_LENGTH], query[512], pname[MAX_PLAYER_NAME];
    
GetPlayerName(playeridpnamesizeof(pname));
    
bcrypt_get_hash(pass);
    
mysql_format(g_SQLquerysizeof(query), "INSERT INTO `players`(`username`, `password`) VALUES('%e', '%s')"pnamepass);
    
mysql_tquery(g_SQLquery"OnPlayerRegister""d"playerid);
    return 
1;
}
forward OnPlayerRegister(playerid);
public 
OnPlayerRegister(playerid)
{
    return 
1;

I bet the issue is something stupid, thanks in advance.
Reply


Messages In This Thread
bCrypt Migration... - by SkyFlare - 27.06.2020, 23:52
Re: bCrypt Migration... - by Kwarde - 28.06.2020, 00:05
Re: bCrypt Migration... - by SkyFlare - 28.06.2020, 00:09
Re: bCrypt Migration... - by GameOvr - 28.06.2020, 09:11
Re: bCrypt Migration... - by SkyFlare - 28.06.2020, 09:44

Forum Jump:


Users browsing this thread: 1 Guest(s)