SA-MP Forums Archive
[Ajuda] Como encryptar as senhas? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Como encryptar as senhas? (/showthread.php?tid=588474)



Como encryptar as senhas? - warriorfrog - 09.09.2015

Queria saber como encryptar e qual a melhor forma (mais protege) minhas senhas do meu servidor.

Tava pensando em criar a minha prуpria trocando as letras, mas pesquisando vi que ficaria fбcil de pegar e dei uma olhada sobre cryptografia e tem varios tipos que sгo muito dificil de reverter.

Qual vocкs usam no SAMP? Como passar o meu sistema de login e registro (sу a parte Senha) pra crytografado, sу pra eu ter uma base pra usar em outras coisas?
Registro / Login
Код:
	if(dialogid == DIALOG_REGISTER)
	{
		if(!response) return Kick(playerid);
		if(response)
		{
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Please enter a valid password!", "Please enter a valid registration password\nTo continue press Register\n\nOxiRegister 1.0\n", "Register", "Quit");
			else
			{
				GetPlayerIp(playerid, ip, sizeof(ip));
				format(query, sizeof(query), "INSERT INTO `accounts` (`Username`, `Senha`, `IP`) VALUES ('%s', '%s', '%s')", GetName(playerid), inputtext, ip);
				mysql_query(ConnectMYSQL,query);
				pInfo[playerid][Registered] = true;
				pInfo[playerid][LoggedIn] = true;
				Logado[playerid] = 1;
				tutorial[playerid] = -1;
				SetPlayerHealthEx(playerid, 100);

				pInfo[playerid][UserID] = cache_get_field_content_int(0, "UserID");
				OnPlayerLogin(playerid);
				//int_dest[0] = pInfo[playerid][UserID] = cache_get_field_content_int(0, "UserID");
			}
		}
		return 1;
	}
	if(dialogid == DIALOG_LOGIN)
	{
		if(!response) return Kick(playerid);
		if(response)
		{
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Please enter a valid password!", "Please enter your valid logging in password\nTo continue press log-in", "Log-in", "Quit");
			else
			{
				mysql_format(ConnectMYSQL, query, sizeof(query), "SELECT * FROM accounts WHERE Senha = '%e' LIMIT 0,1", inputtext);
				mysql_pquery(ConnectMYSQL, query, "OnLogin", "d", playerid);
			}
		}
		return 1;
	}



Re: Como encryptar as senhas? - PT - 09.09.2015

Agora й nativo e tudo;

https://sampwiki.blast.hk/wiki/SHA256_PassHash


Re: Como encryptar as senhas? - Nixtren - 09.09.2015

Nunca crie a sua prуpria criptografia a nгo ser que seja um especialista em seguranзa/criptografia. Algoritmos de hashing como por exemplo SHA-256, Whirlpool e etc existem e jб tiveram a sua seguranзa avaliada. Como nгo somos criptуgrafos, a probabilidade de cometer algum erro de lуgica (em termos de seguranзa) й muito maior. Eu pessoalmente uso Whirlpool (via Plugin), mas tambйm tem o SHA-256 como o user acima disse


Re: Como encryptar as senhas? - pedrotvr - 09.09.2015

tinha atй me esquecido disso! bem lembrado, como eu faзo pra usar isso em senha? Tipo no cуdigo dele como exemplo?


Re: Como encryptar as senhas? - GustavoSouza - 09.09.2015

Um exemplo para vocкs:

PHP код:
#define HASH_SENHA  "AEOAUEABABEAEAEOUAEIX" 
Registro:
PHP код:
SHA256_PassHash(inputtextHASH_SENHAPlayerInfo[playerid][pSenha], 64); 
Login:
PHP код:
Senha[64];
SHA256_PassHash(inputtext,HASH_SENHA,Senha,64); 
Creditos: Nick_


Re: Como encryptar as senhas? - PT - 09.09.2015

Quote:
Originally Posted by pedrotvr
Посмотреть сообщение
tinha atй me esquecido disso! bem lembrado, como eu faзo pra usar isso em senha? Tipo no cуdigo dele como exemplo?
Na prуpria Wiki tem o exemplo


Re: Como encryptar as senhas? - warriorfrog - 09.09.2015

Quote:
Originally Posted by GustavoSouza
Посмотреть сообщение
Um exemplo para vocкs:

PHP код:
#define HASH_SENHA  "AEOAUEABABEAEAEOUAEIX" 
Registro:
PHP код:
SHA256_PassHash(inputtextHASH_SENHAPlayerInfo[playerid][pSenha], 64); 
Login:
PHP код:
Senha[64];
SHA256_PassHash(inputtext,HASH_SENHA,Senha,64); 
Creditos: Nick_
+REP brother

Fiz certinho? O que й essa define?
Код:
#define HASH_SENHA  "AEOAUEABABEAEAEOUAEIX"  

	if(dialogid == DIALOG_REGISTER)
	{
		if(!response) return Kick(playerid);
		if(response)
		{
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Please enter a valid password!", "Please enter a valid registration password\nTo continue press Register\n\nOxiRegister 1.0\n", "Register", "Quit");
			else
			{
				new senhaecrytada;
				SHA256_PassHash(inputtext, HASH_SENHA, senhaecrytada, 64);  
				
				GetPlayerIp(playerid, ip, sizeof(ip));
				format(query, sizeof(query), "INSERT INTO `accounts` (`Username`, `Senha`, `IP`) VALUES ('%s', '%s', '%s')", GetName(playerid), senhaecrytada, ip);
				mysql_query(ConnectMYSQL,query);
				pInfo[playerid][Registered] = true;
				pInfo[playerid][LoggedIn] = true;
				Logado[playerid] = 1;
				tutorial[playerid] = -1;
				SetPlayerHealthEx(playerid, 100);

				pInfo[playerid][UserID] = cache_get_field_content_int(0, "UserID");
				OnPlayerLogin(playerid);
				//int_dest[0] = pInfo[playerid][UserID] = cache_get_field_content_int(0, "UserID");
			}
		}
		return 1;
	}
	if(dialogid == DIALOG_LOGIN)
	{
		if(!response) return Kick(playerid);
		if(response)
		{
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Please enter a valid password!", "Please enter your valid logging in password\nTo continue press log-in", "Log-in", "Quit");
			else
			{
				Senha[64];
				SHA256_PassHash(inputtext,HASH_SENHA,Senha,64);
				
				mysql_format(ConnectMYSQL, query, sizeof(query), "SELECT * FROM accounts WHERE Senha = '%e' LIMIT 0,1", Senha);
				mysql_pquery(ConnectMYSQL, query, "OnLogin", "d", playerid);
			}
		}
		return 1;
	}



Re: Como encryptar as senhas? - GustavoSouza - 10.09.2015

A define ali se nгo me engano a senha do player serб trocada por aquilo..

PHP код:
enum pInfo
{
     
pSenha[128],
}
new 
PlayerInfo[MAX_PLAYERS][pInfo];
#define HASH_SENHA  "AEOAUEABABEAEAEOUAEIX" // Coloque aqui oq serб trocado no lugar da senha..
    
if(dialogid == DIALOG_REGISTER)
    {
        if(!
response) return Kick(playerid);
        if(
response)
        {
            if(!
strlen(inputtext)) return ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_INPUT"Please enter a valid password!""Please enter a valid registration password\nTo continue press Register\n\nOxiRegister 1.0\n""Register""Quit");
            else
            {
                
SHA256_PassHash(inputtextHASH_SENHAPlayerInfo[playerid][pSenha], 64);
                
GetPlayerIp(playeridipsizeof(ip));
                
format(querysizeof(query), "INSERT INTO `accounts` (`Username`, `Senha`, `IP`) VALUES ('%s', '%s', '%s')"GetName(playerid), PlayerInfo[playerid][pSenha], ip);
                
mysql_query(ConnectMYSQL,query);
                
pInfo[playerid][Registered] = true;
                
pInfo[playerid][LoggedIn] = true;
                
Logado[playerid] = 1;
                
tutorial[playerid] = -1;
                
SetPlayerHealthEx(playerid100);
                
pInfo[playerid][UserID] = cache_get_field_content_int(0"UserID");
                
OnPlayerLogin(playerid);
            }
        }
        return 
1;
    }
    if(
dialogid == DIALOG_LOGIN)
    {
        if(!
response) return Kick(playerid);
        if(
response)
        {
            if(!
strlen(inputtext)) return ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Please enter a valid password!""Please enter your valid logging in password\nTo continue press log-in""Log-in""Quit");
            else
            {
                
Senha[64];
                
SHA256_PassHash(inputtext,HASH_SENHA,Senha,64);
                
mysql_format(ConnectMYSQLquerysizeof(query), "SELECT * FROM accounts WHERE Senha = '%e' LIMIT 0,1"Senha);
                
mysql_pquery(ConnectMYSQLquery"OnLogin""d"playerid);
            }
        }
        return 
1;
    } 



Re: Como encryptar as senhas? - warriorfrog - 10.09.2015

Quote:
Originally Posted by GustavoSouza
Посмотреть сообщение
A define ali se nгo me engano a senha do player serб trocada por aquilo..

PHP код:
enum pInfo
{
     
pSenha[128],
}
new 
PlayerInfo[MAX_PLAYERS][pInfo];
#define HASH_SENHA  "AEOAUEABABEAEAEOUAEIX" // Coloque aqui oq serб trocado no lugar da senha..
    
if(dialogid == DIALOG_REGISTER)
    {
        if(!
response) return Kick(playerid);
        if(
response)
        {
            if(!
strlen(inputtext)) return ShowPlayerDialog(playeridDIALOG_REGISTERDIALOG_STYLE_INPUT"Please enter a valid password!""Please enter a valid registration password\nTo continue press Register\n\nOxiRegister 1.0\n""Register""Quit");
            else
            {
                
SHA256_PassHash(inputtextHASH_SENHAPlayerInfo[playerid][pSenha], 64);
                
GetPlayerIp(playeridipsizeof(ip));
                
format(querysizeof(query), "INSERT INTO `accounts` (`Username`, `Senha`, `IP`) VALUES ('%s', '%s', '%s')"GetName(playerid), PlayerInfo[playerid][pSenha], ip);
                
mysql_query(ConnectMYSQL,query);
                
pInfo[playerid][Registered] = true;
                
pInfo[playerid][LoggedIn] = true;
                
Logado[playerid] = 1;
                
tutorial[playerid] = -1;
                
SetPlayerHealthEx(playerid100);
                
pInfo[playerid][UserID] = cache_get_field_content_int(0"UserID");
                
OnPlayerLogin(playerid);
            }
        }
        return 
1;
    }
    if(
dialogid == DIALOG_LOGIN)
    {
        if(!
response) return Kick(playerid);
        if(
response)
        {
            if(!
strlen(inputtext)) return ShowPlayerDialog(playeridDIALOG_LOGINDIALOG_STYLE_PASSWORD"Please enter a valid password!""Please enter your valid logging in password\nTo continue press log-in""Log-in""Quit");
            else
            {
                
Senha[64];
                
SHA256_PassHash(inputtext,HASH_SENHA,Senha,64);
                
mysql_format(ConnectMYSQLquerysizeof(query), "SELECT * FROM accounts WHERE Senha = '%e' LIMIT 0,1"Senha);
                
mysql_pquery(ConnectMYSQLquery"OnLogin""d"playerid);
            }
        }
        return 
1;
    } 
+rep mano

Aquilo ali entгo й oq vai aparecer qnd eu olhar no phpmyadmin as senhas?

Se for isso existe algum jeito de eu colocar um cmd de admin master de tipo /versenha [nome do player - online/offilne]
Pra sei lб se algum infeliz estiver abusando de bug ou qlqr outra coisa?


Re: Como encryptar as senhas? - GustavoSouza - 10.09.2015

Sim aquilo vai aparecer quando tu olhar a senha do cara no phpmyadmin,

Tou meio ainda por fora dessa nova versгo, mais acho que da sim pra tu criar um comando para ver a senha sim..