[Tutorial] Encriptaзгo - 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)
+----- Forum: Lançamentos/Releases (
https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Encriptaзгo (
/showthread.php?tid=402179)
Encriptaзгo -
RebeloX - 25.12.2012
Encriptaзгo
Encriptaзгo й uma das coisas mais importantes (se nгo, a mais importante) de um servidor, a encriptaзгo trбs seguranзa aos servidores e privacidade aos usuбrios, eu sei que muitos dos servidores RPG que usam GF's nгo estгo encriptados, entгo eles nгo protegem a privacidade dos usuбrios, podendo saber as passwords dos mesmos e ser vitimas de ataques.
"Ah nгo vale a pena vei, meu server й foda e ninguйm entra lб #vidaloka"
Vocк estб errado, comeзando por nгo cumprir as Politicas de Privacidade, nas quais que dizem que vocк deverб salva guardar as passwords dos usuбrios impedindo de vocк saber a password do mesmo. Mas claro que nгo fica por aqui, se receber um ataque no seu ftp (digo isto para os usuбrios que usam salvamento .ini, MySQL й outra coisa) e o atacante for lб na scriptfiles e vir as passwords ele edita e fica com as contas para ele, muito bom nгo acha?
Mas bem para vocк fazer uma encriptaзгo no seu servidor й muito simples, vocк pode usar 3 sistemas, Whirlpool(******) , md5(******), Hash(RydeR`).
Eu pessoalmente prefiro o md5, retorna sempre uma string de 32 caracteres e enquanto Whirlpool retorna 128 o que torna maior e torna a ser chato, o Hash do Ryder` й um pouco mais complicado porque tem suporte PHP e tambйm se torna chato, Whirlpool tambйm й necessбrio usar plugin o que й ainda mais chato, por isso optei pelo md5.
Antes de tudo veja este cуdigo pois serб necessбrio para continuar.
Existe gente que diz que md5 й inseguro, sim й verdade, por exemplo:
Vamos encriptar a seguinte frase: "The quick brown fox jumps over the lazy dog"
Resultado: 9e107d9d372bb6826bd81d3542a419d6
Mas se vocк colocar essa encriptaзгo no ****** irб aparecer sites como este.
Sendo assim vocк pensa, entгo md5 й infalнvel, nem por isso, existe uma coisa chamada salt.
Salt й uma string simples que serб adicionada a nossa encriptaзгo, por exemplo:
pawn Код:
new
salt[] = "1%1cAu!g+>K53PY}", //nгo й necessбrio usar estes caracteres pode usar outros.
buf[34],
senha[24] = "HelloWorld",
result[17+25] //digamos que o valor do salt й 17 (16+1) e o valor da password serб no mбximo 25(24+1)
;
format(result,sizeof(result),"%s%s",senha,salt);
md5(buf,result);
printf("%s",buf);
Irб imprimir:
Код:
B7BE4DF038F0D0E3AFC45C6262355E4E
Agora se voce procurar no ****** irб aparecer:
Код:
Sua pesquisa - B7BE4DF038F0D0E3AFC45C6262355E4E - nгo encontrou nenhum documento.
Claro que agora com este tutorial postado й obvio que aparece no ******, mas na wordlist nгo irб aparecer e desta forma o seu servidor estarб muito mais seguro e tambйm estarб a cumprir os termos de privacidade.
"Ah mas existe sites para converter as criptografia", errado, nгo existem sites para converter, porque uma encriptaзгo й feita e й para ficar assim, nгo existe forma de converter, esses sites criam uma worldlist, ou seja, vocк faz lб um hash, por exemplo. "SA-MP" e vai aparecer "a1c7c7c356c018da73744a2a834de456" e o site vai gravar uma wordlist, assim quando vocк colocar a encriptaзгo "a1c7c7c356c018da73744a2a834de456" ele irб procurar pela worldlist e vai achar o "SA-MP". Exemplo de site: http://md5.gromweb.com
Para servidores com suporte MySQL nгo seria necessбrio fazer isto, pode usar md5 diretamente da Query, mas claro que tem de colocar o salt, mas tambйm pode usar cб fora, й indiferente.
Servidores com Acesso PHP
Para servidores que usem MySQL e PHP aconselho a lerem isto.
Fiz uma adaptaзгo do cуdigo:
PHP код:
<?php
/**
* Gera um salt aleatуrio
*
* @param int $tamanho Tamanho do salt
*
* @return string
*/
function geraSaltAleatorio($tamanho = 22) {
return substr(sha1(mt_rand()), 0, $tamanho);
}
$salt = geraSaltAleatorio();
// Senha do usuбrio, pode ter vindo do $_POST, $_GET ou outro lugar
$senha = 'olб mundo';
// Cria um hash
$hash = md5($senha . $salt);
// Encripta esse hash 1000 vezes
for ($i = 0; $i < 1000; $i++) {
$hash = md5($hash);
}
// Salvamos $hash e $salt no banco de dados
Em pawn ficou mais ou menos assim:
pawn Код:
mt_rand(){
new rand[11];
format(rand,sizeof(rand),"%d",random(9999999999));
return rand;
}
random_salt(buffer[34]){
buffer = MD5_Hash(mt_rand());
return 1;
}
public OnGameModeInit()
{
new salt[34],word[80],buf[34];
random_salt(salt);
format(word,sizeof(word),"%s%s",salt,"minhapassword");
md5(buf,word);
for(new i; i<1000; ++i)
md5(buf,buf);
printf("result: %s",buf);
return 1;
}
Agora vocкs devem adaptar ao vosso script.
Atenзгo: Esta parte й apenas para servidores com acesso a PHP, caso o seu servidor nгo use PHP fique-se pelo menos pela parte mais simples, a nгo ser que queira fazer mesmo que ninguйm saiba a password do usuбrio, ai sim use esta forma, mas lembre-se, deverб ler o link que postei.
Agradecimentos
-BlueX - Criador do tutorial;
-Stewie` - Ensinou-me o salt;
-ThiagoBelem - Explicaзгo do salt;
Re: Encriptaзгo -
mau.tito - 25.12.2012
Muito bom bluex '-'
Re: Encriptaзгo -
EditPawn - 25.12.2012
Nгo sabia disso e й muito importante, irei fazer com o GM que estou codando, mais ainda nгo entendi como eu faria para fazer a verificaзгo se a senha que o jogador digitar confere com a senha encriptada que foi salva ?
Poderia dar um pequeno exemplo?
@EDIT
Esquece, ja sei hahha
Bom tutorial
Re: Encriptaзгo -
Kuddy - 25.12.2012
Уtimo tutorial, bem explicado.
Re: Encriptaзгo -
RebeloX - 25.12.2012
Quote:
Originally Posted by mau.tito
Muito bom bluex '-'
|
Obrigado
Quote:
Originally Posted by EditPawn
Nгo sabia disso e й muito importante, irei fazer com o GM que estou codando, mais ainda nгo entendi como eu faria para fazer a verificaзгo se a senha que o jogador digitar confere com a senha encriptada que foi salva ?
Poderia dar um pequeno exemplo?
|
Espero que isto ajude
Quote:
Originally Posted by Kuddy
Уtimo tutorial, bem explicado.
|
Obrigado Kuddy
Quote:
Originally Posted by [NVC]iTrevaS
Muito bom, irб ajudar muitos 
|
Obrigado
Re: Encriptaзгo -
JapaN* - 25.12.2012
Quote:
Originally Posted by mau.tito
Muito bom bluex '-'
|
Eu tbm uso MD5
Re: Encriptaзгo -
AmericanStyle'™ - 25.12.2012
Muito bacana, nunca usei sistema de Encriptaзгo, ou algo do tipo

Tenho uma pequena duvida.
meu servidor й Mysql (WampServer).
O Maximo de caracteres que o Player pode colocar em sua senha й 12.
Entгo no mesmo criei uma coluna atй 12 caracteres.
se eu usar esse MD5 vou te que alterar o MAX de senha ?
porque isso Gera muitos caracteres, quanto seria o maximo ? 35 ?
Outra :
se a senha й, citamos (Amizade), e nisso vai criar a Senha MD5.
quando eu for logar, eu irei logar com a senha padrгo ?
no caso Amizade ?
Abraзos !
Re: Encriptaзгo -
RebeloX - 25.12.2012
Quote:
Originally Posted by Japa3D
Eu tbm uso MD5
|
Somos dois jб hehe
Quote:
Originally Posted by AmericanStyle'™
Muito bacana, nunca usei sistema de Encriptaзгo, ou algo do tipo 
Tenho uma pequena duvida.
meu servidor й Mysql (WampServer).
O Maximo de caracteres que o Player pode colocar em sua senha й 12.
Entгo no mesmo criei uma coluna atй 12 caracteres.
se eu usar esse MD5 vou te que alterar o MAX de senha ?
porque isso Gera muitos caracteres, quanto seria o maximo ? 35 ?
Outra :
se a senha й, citamos (Amizade), e nisso vai criar a Senha MD5.
quando eu for logar, eu irei logar com a senha padrгo ?
no caso Amizade ?
Abraзos !
|
Sim terб que modificar o mбximo para 35.
Para fazer o login basta fazer
pawn Код:
"SELECT * FROM `nome_da_tabel` WHERE name='nome_do_jogador' AND password=md5('Amizade')"
Lembre-se que ao usar o salt deverб gravar o mesmo encriptado na database
Re: Encriptaзгo -
AmericanStyle'™ - 25.12.2012
Quote:
Originally Posted by BlueX
Somos dois jб hehe
Sim terб que modificar o mбximo para 35.
Para fazer o login basta fazer
pawn Код:
"SELECT * FROM `nome_da_tabel` WHERE name='nome_do_jogador' AND password=md5('Amizade')"
Lembre-se que ao usar o salt deverб gravar o mesmo encriptado na database 
|
Obrigado, testei e tudo (:
#edit
Re: Encriptaзгo -
AmericanStyle'™ - 26.12.2012
Quote:
Originally Posted by BlueX
Somos dois jб hehe
Sim terб que modificar o mбximo para 35.
Para fazer o login basta fazer
pawn Код:
"SELECT * FROM `nome_da_tabel` WHERE name='nome_do_jogador' AND password=md5('Amizade')"
Lembre-se que ao usar o salt deverб gravar o mesmo encriptado na database 
|
Nгo entendi

Testei sem o salt e o resultado foi o esperado.
Agora com salt da senha errada (: