Portal SAMP
[Ajuda] criptografar senhas - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] criptografar senhas (/showthread.php?tid=3954)



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