criptografar senhas - RosaScripter - 10/09/2023
Estou tendo dificuldade para criptografar senhas, caso alguém tiver um breve tutorial para eu aprender estarei bem agradecido!
abaixo deixo o salvamento pra quem quiser ajudar!
Código: case DIALOG_REGISTRO:
{
if(!strlen(inputtext))
{
notificacao(playerid, "ERRO", "Nao introduziu nada.", ICONE_ERRO);
format(Str, 256, "Seja bem-vindo ao nosso servidor, %s!\nPara efetuar seu cadastro, insira uma senha abaixo.\n*Sua senha deve conter entre 4 e 20 caracteres.", Name(playerid));
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Eres nuevo aca.", Str, "Crear", "X");
return 1;
}
if(!response)
{
notificacao(playerid, "INFO", "Decidiu nao fazer Login.", ICONE_AVISO);
Kick(playerid);
return 1;
}
else
{
format(Str, 256, "Seja bem-vindo ao nosso servidor, %s!\nPara efetuar seu cadastro, insira uma senha abaixo.\n*Sua senha deve conter entre 4 e 20 caracteres.", Name(playerid));
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Voce e novo.", Str, "Criar", "X");
if(strlen(inputtext) < 4 || strlen(inputtext) > 20)
{
notificacao(playerid, "ERRO", "Sua senha deve ter de 4 a 20 caracteres.", ICONE_ERRO);
format(Str, 256, "Seja bem-vindo ao nosso servidor, %s!\nPara efetuar seu cadastro, insira uma senha abaixo.\n*Sua senha deve conter entre 4 e 20 caracteres.", Name(playerid));
return ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Voce e novo.", Str, "Criar", "X");
}
new uid = GetIdfixo();
PlayerInfo[playerid][IDF] = uid;
if(!DOF2_FileExists(Account))
{
DOF2_CreateFile(Account);
DOF2_SaveFile();
new SenhaCamuflar[90];
SHA256_PassHash(inputtext, "78sdjs86d2h", SenhaCamuflar, 90);
DOF2_SetString(Account, "pSenha", SenhaCamuflar);
DOF2_SetString(Account, "pEmail", "");
DOF2_SetInt(Account, "IDF", PlayerInfo[playerid][IDF]);
DOF2_SetInt(Account, "pSexo", 0);
DOF2_SetInt(Account, "pSkin", 0);
DOF2_SetInt(Account, "pDinheiro", 0);
PlayerInfo[playerid][pDinheiro] = 0;
DOF2_SetInt(Account, "pBanco", 0);
PlayerInfo[playerid][pBanco] = 0;
DOF2_SetInt(Account, "pIdade", 0);
DOF2_SetInt(Account, "pSegundosJogados", 0);
DOF2_SetInt(Account, "pAvisos", 0);
DOF2_SetInt(Account, "pCadeia", 0);
DOF2_SetInt(Account, "pAdmin", 0);
DOF2_SetInt(Account, "pLastLogin", 0);
DOF2_SetInt(Account, "pInterior", 0);
DOF2_SetFloat(Account, "pPosX", 0);
DOF2_SetFloat(Account, "pPosY", 0);
DOF2_SetFloat(Account, "pPosZ", 0);
DOF2_SetFloat(Account, "pPosA", 0);
DOF2_SetFloat(Account, "pCamX", 0);
DOF2_SetFloat(Account, "pCamY", 0);
DOF2_SetFloat(Account, "pCamZ", 0);
DOF2_SetBool(Account, "pCongelado", false);
DOF2_SetBool(Account, "pCalado", false);
DOF2_SetInt(Account, "pFome", 0);
FomePlayer[playerid] = 100;
DOF2_SetInt(Account, "pSede", 0);
SedePlayer[playerid] = 100;
DOF2_SetInt(Account, "pVIP", 0);
DOF2_SetInt(Account, "pCoins", 0);
DOF2_SetInt(Account, "pProfissao", 0);
DOF2_SetInt(Account, "pOrg", 0);
DOF2_SetInt(Account, "pCargo", 0);
DOF2_SetInt(Account, "pProcurado", 0);
DOF2_SetInt(Account, "pMultas", 0);
DOF2_SetInt(Account, "pCasa", -1);
PlayerInfo[playerid][Casa] = -1;
DOF2_SaveFile();
}
for(new i = 0; i < 23; ++i)
{
PlayerTextDrawHide(playerid, Registration_PTD[playerid][i]);
}
CancelSelectTextDraw(playerid);
ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "{FFFFFF}Email", "\n{FFFFFF}Digite seu email para seguir para o proximo passo do cadastro\n{FF0000}Voce deve colocar o email corretamente.", "Validar", "");
}
}
Código: case DIALOG_LOGIN:
{
if(!strlen(inputtext))
{
notificacao(playerid, "INFO", "Introduza senha para entrar.", ICONE_AVISO);
format(Str, sizeof(Str), "Desejo boas vindas novamente, %s.\nPara Entrar no servidor Digite sua senha abaixo.", Name(playerid));
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Bem vindo de novo", Str, "Confirmar", "X");
return 1;
}
if(!response)
{
notificacao(playerid, "INFO", "Decidiu nao fazer login.", ICONE_AVISO);
Kick(playerid);
return 1;
}
else
{
new SenhaP[90];
SHA256_PassHash(inputtext, "78sdjs86d2h", SenhaP, 90);
if(strcmp(SenhaP, DOF2_GetString(String, "pSenha")))
{
format(Str, sizeof(Str), "Desejo boas vindas novamente, %s.\nPara Entrar no servidor Digite sua senha abaixo.", Name(playerid));
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Bem vindo de novo", Str, "Ingresar", "X");
Erro[playerid]++;
if(Erro[playerid] == 3)
{
notificacao(playerid, "INFO", "Senha errada", ICONE_AVISO);
Kick(playerid);
return 1;
}
return 1;
}
else
{
if(DOF2_FileExists(Account))
{
format(PlayerInfo[playerid][pLastLogin], 24, DOF2_GetString(Account, "pLastLogin"));
format(PlayerInfo[playerid][pEmail],64,DOF2_GetString(Account,"pEmail"));
PlayerInfo[playerid][IDF] = DOF2_GetInt(Account, "IDF");
PlayerInfo[playerid][pSkin] = DOF2_GetInt(Account, "pSkin");
PlayerInfo[playerid][IDF] = DOF2_GetInt(Account, "pSexo");
SetPlayerSkin(playerid, DOF2_GetInt(Account, "pSkin"));
PlayerInfo[playerid][pDinheiro] = DOF2_GetInt(Account, "pDinheiro");
PlayerInfo[playerid][pBanco] = DOF2_GetInt(Account, "pBanco");
PlayerInfo[playerid][pIdade] = DOF2_GetInt(Account, "pIdade");
PlayerInfo[playerid][pSegundosJogados] = DOF2_GetInt(Account, "pSegundosJogados");
PlayerInfo[playerid][pAvisos] = DOF2_GetInt(Account, "pAvisos");
PlayerInfo[playerid][pCadeia] = DOF2_GetInt(Account, "pCadeia");
PlayerInfo[playerid][pAdmin] = DOF2_GetInt(Account, "pAdmin");
PlayerInfo[playerid][pInterior] = DOF2_GetInt(Account, "pInterior");
PlayerInfo[playerid][pPosX] = DOF2_GetFloat(Account, "pPosX");
PlayerInfo[playerid][pPosY] = DOF2_GetFloat(Account, "pPosY");
PlayerInfo[playerid][pPosZ] = DOF2_GetFloat(Account, "pPosZ");
PlayerInfo[playerid][pPosA] = DOF2_GetFloat(Account, "pPosA");
PlayerInfo[playerid][pCamX] = DOF2_GetFloat(Account, "pCamX");
PlayerInfo[playerid][pCamY] = DOF2_GetFloat(Account, "pCamY");
PlayerInfo[playerid][pCamZ] = DOF2_GetFloat(Account, "pCamZ");
PlayerInfo[playerid][pCongelado] = DOF2_GetBool(Account, "pCongelado");
PlayerInfo[playerid][pCalado] = DOF2_GetBool(Account, "pCalado");
FomePlayer[playerid] = DOF2_GetInt(Account, "pFome");
SedePlayer[playerid] = DOF2_GetInt(Account, "pSede");
PlayerInfo[playerid][pVIP] = DOF2_GetInt(Account, "pVIP");
PlayerInfo[playerid][pCoins] = DOF2_GetInt(Account, "pCoins");
PlayerInfo[playerid][pProfissao] = DOF2_GetInt(Account, "pProfissao");
PlayerInfo[playerid][Org] = DOF2_GetInt(Account, "pOrg");
PlayerInfo[playerid][Cargo] = DOF2_GetInt(Account, "pCargo");
PlayerInfo[playerid][pProcurado] = DOF2_GetInt(Account, "pProcurado");
SetPlayerWantedLevel(playerid, DOF2_GetInt(Account, "pProcurado"));
PlayerInfo[playerid][pMultas] = DOF2_GetInt(Account, "pMultas");
PlayerInfo[playerid][Casa] = DOF2_GetInt(Account, "pCasa");
DOF2_SaveFile();
//
}
if(FirstLogin[playerid] == false)
{
ShowPlayerDialog(playerid, DIALOG_POS, DIALOG_STYLE_MSGBOX, "Voce gostaria...", "Voce gostaria de voltar a sua ultima posicao?", "Sim", "Nao");
format(Str, sizeof(Str), "Bem vindo %s. Seu ultimo login foi em %s.", Name(playerid), PlayerInfo[playerid][pLastLogin]);
notificacao(playerid, "INFO", Str, ICONE_AVISO);
if(IsPlayerMobile(playerid)){
notificacao(playerid, "INFO", "Voce esta conectado pelo Celular", ICONE_AVISO);
}else{
notificacao(playerid, "INFO", "Voce esta conectado pelo Computador", ICONE_AVISO);
}
}
else
{
SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], -1636.031250, 1412.865600, 7.187500, 136.470169, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
FirstLogin[playerid] = false;
}
for(new i = 0; i < 23; ++i)
{
PlayerTextDrawHide(playerid, Registration_PTD[playerid][i]);
}
for(new i = 0; i < 10; i ++)
{
PlayerTextDrawShow(playerid, HudServer[playerid][i]);
}
for(new i = 0; i < 8; i ++)
{
TextDrawShowForPlayer(playerid, Logo[i]);
}
CancelSelectTextDraw(playerid);
Timers(playerid);
PlayerTextDraw(playerid);
CarregarAvaliacao(playerid);
CarregarVIP(playerid);
MapRemocao(playerid);
CarregarAnims(playerid);
CriarInventario(playerid);
CarregarMissoes(playerid);
CarregarArmas(playerid);
CarregarMortos(playerid);
SetPlayerVirtualWorld(playerid, 0);
pLogado[playerid] = true;
pJogando[playerid] = true;
Erro[playerid] = 0;
}
}
}
Código: stock SalvarDadosSkin(playerid)
{
new File[255];
new Data[24], Dia, Mes, Ano, Hora, Minuto, Float:A, Float:X, Float:Y, Float:Z;
GetPlayerCameraPos(playerid, X, Y, Z);
gettime(Hora, Minuto);
getdate(Ano, Mes, Dia);
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
GetPlayerFacingAngle(playerid, A);
format(Data, 24, "%02d/%02d/%d - %02d:%02d", Dia, Mes, Ano, Hora, Minuto);
format(File, sizeof(File), PASTA_CONTAS, PlayerName(playerid));
if(DOF2_FileExists(File))
{
DOF2_SaveFile();
DOF2_SetInt(File, "pSkin", GetPlayerSkin(playerid));
DOF2_SetInt(File, "pDinheiro", PlayerInfo[playerid][pDinheiro]);
DOF2_SetInt(File, "pBanco", PlayerInfo[playerid][pBanco]);
DOF2_SetInt(File, "pIdade", PlayerInfo[playerid][pIdade]);
DOF2_SetInt(File, "pSegundosJogados", PlayerInfo[playerid][pSegundosJogados]);
DOF2_SetInt(File, "pAvisos", PlayerInfo[playerid][pAvisos]);
DOF2_SetInt(File, "pCadeia", PlayerInfo[playerid][pCadeia]);
DOF2_SetInt(File, "pAdmin", PlayerInfo[playerid][pAdmin]);
DOF2_SetString(File, "pLastLogin", Data);
DOF2_SetInt(File, "pInterior", GetPlayerInterior(playerid));
DOF2_SetFloat(File, "pPosX", Pos[0]);
DOF2_SetFloat(File, "pPosY", Pos[1]);
DOF2_SetFloat(File, "pPosZ", Pos[2]);
DOF2_SetFloat(File, "pPosA", A);
DOF2_SetFloat(File, "pCamX", X);
DOF2_SetFloat(File, "pCamY", Y);
DOF2_SetFloat(File, "pCamZ", Z);
DOF2_SetBool(File, "pCongelado", PlayerInfo[playerid][pCongelado]);
DOF2_SetBool(File, "pCalado", PlayerInfo[playerid][pCalado]);
DOF2_SetInt(File, "pFome", FomePlayer[playerid]);
DOF2_SetInt(File, "pSede", SedePlayer[playerid]);
DOF2_SetInt(File, "pVIP", PlayerInfo[playerid][pVIP]);
DOF2_SetInt(File, "pCoins", PlayerInfo[playerid][pCoins]);
DOF2_SetInt(File, "pProfissao", PlayerInfo[playerid][pProfissao]);
DOF2_SetInt(File, "pOrg", PlayerInfo[playerid][Org]);
DOF2_SetInt(File, "pCargo", PlayerInfo[playerid][Cargo]);
DOF2_SetInt(File, "pProcurado", GetPlayerWantedLevel(playerid));
DOF2_SetInt(File, "pMultas", PlayerInfo[playerid][pMultas]);
DOF2_SetInt(File, "pCasa", PlayerInfo[playerid][Casa]);
DOF2_SaveFile();
}
return 1;
}
RE: criptografar senhas - zBreno - 10/09/2023
leia as funções da variável bufpass https://drive.google.com/file/d/1OREJEtMD-CT5nI8dDpdNgH63CAnwj-Dz/view?usp=sharing funciona com esse plugin de criptografia https://github.com/Southclaws/samp-whirlpool esse plugin já foi descontinuado se quiser um mas recente use esse aqui https://github.com/Sreyas-Sreelal/samp-bcrypt/releases
tutorial sha 256 https://sampforum.blast.hk/printthread.php?tid=581336
https://drive.google.com/file/d/18cVrSyqghZNVCSy3pKiMtoQX4N_EXGq2/view?usp=sharing
tutorial de uso plugin https://sampforum.blast.hk/showthread.php?tid=376424
RE: criptografar senhas - White_Blue - 10/09/2023
Recomendo utilizar o plugin samp-bcrypt, que é escrito em Rust(Que é uma linguagem já conhecida por sua segurança de memória) e utiliza o algoritmo de criptografia bcrypt.
No repositório do Github do mesmo, existe um exemplo de como criptografar senhas usando o samp-bcrypt.
Código PHP: main(){ bcrypt_hash(0,"OnPassswordHash","text",BCRYPT_COST); }
forward OnPassswordHash(playerid); public OnPassswordHash(playerid){ new dest[BCRYPT_HASH_LENGTH]; bcrypt_get_hash(dest); bcrypt_verify(playerid,"OnPassswordVerify","text",dest); }
forward OnPassswordVerify(playerid,bool:success); public OnPassswordVerify(playerid,bool:success){ //success denotes verifying was successful or not if(success){ //verfied } else{ //hash doesn't match with text } }
https://github.com/Sreyas-Sreelal/samp-bcrypt
|