"BlaBlaBla" merci :laugh !
#include <dini>
new pRank[MAX_PLAYERS];
new pRegister[MAX_PLAYERS];
//Dans le OnPlayerConnect
public OnPlayerConnect(playerid)
{
if(pRegister[playerid] == 0)
{
TogglePlayerControllable(playerid,0);
SendClientMessage(playerid, ORANGE, "Faites /register <MOTDEPASSE> pour pouvoir vous connecter !");
}
pRank[playerid] = 1;
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
if(!fexist("Stats.txt")) dini_Create("Stats.txt");
dini_Set("Stats.txt","Pseudo", playername);
dini_IntSet("Stats.txt","Rang", pRank[playerid]);
return 1;
}
//Dans le OnPlayerCommandText :
new cmd[128], tmp[128], idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd,"/register",true)==0)
{
tmp = strtok(cmdtext, idx);
if(pRegister[playerid] == 1) return SendClientMessage(playerid, ROUGE, "Vous ètes deja enregistrer !");
if(strlen(tmp) == 0) return SendClientMessage(playerid, ROUGE, "Usage : /register <MOTDEPASSE>");
pRegister[playerid] = 1;
dini_Set("Stats.txt","Mot de Passe", tmp);
dini_IntSet("Stats.txt","Enregistrer", pRegister[playerid]);
SendClientMessage(playerid, ORANGE, "Vous vous ètes enregistrer, /login <MOTDEPASSE> pour vous connecter !");
return 1;
}
if(strcmp(cmd,"/login",true)==0)
{
tmp = strtok(cmdtext, idx);
new password;
password = dini_Int("Stats.txt","Mot de Passe");
if(strcmp(tmp, password,true)==0) //Ici que le probleme survient
{
TogglePlayerControllable(playerid,1);
SendClientMessage(playerid, VERT, "Vous ètes maintenant connecté !");
}
else return SendClientMessage(playerid, ROUGE, "Erreur, votre mot de passe ne correspond pas !");
return 1;
} if(strcmp(tmp, password,true)==0) //Ici que le probleme survient
if(!fexist("Stats.txt")) dini_Create("Stats.txt");Je vais regarder ton fs pour essayer de faire la meme chose de mon coté, je vous en dirai des nouvelles.udb_hashC'est pour 'formater' le code dans un sens en chiffre pour ne pas ce faire hacker son compte et ce n'est pas réversible, donc sécurisé.Code: [Sélectionner]udb_hashC'est pour 'formater' le code dans un sens en chiffre pour ne pas ce faire hacker son compte et ce n'est pas réversible, donc sécurisé.
Regarde comment ça marche, mais ne copie pas.
Je sais d'ou vient le probleme. Avec dini, je ne peux pas recuperer du texte mais uniquement des nombres. C'est la que le hash intervient.faux
Code: [Sélectionner]udb_hashC'est pour 'formater' le code dans un sens en chiffre pour ne pas ce faire hacker son compte et ce n'est pas réversible, donc sécurisé.
Regarde comment ça marche, mais ne copie pas.
Ce n'est absolument pas sécurisé.
Code: [Sélectionner]udb_hashC'est pour 'formater' le code dans un sens en chiffre pour ne pas ce faire hacker son compte et ce n'est pas réversible, donc sécurisé.
Regarde comment ça marche, mais ne copie pas.
Ce n'est absolument pas sécurisé.
Comment ça, j'ai lu plutôt parcouru on va dire ça ?
stock udb_hash(buf[]) {
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}C'est plus clair pour moi maintenant, merci.
En bref autant garder le mot de passe en string/texte, normal.
public Encrypt(string[])
{
for(new x=0; x < strlen(string); x++)
{
string[x] += (3^x) * (x % 15);
if(string[x] > (0xff))
{
string[x] -= 256;
}
}
return 1;
}On défini x = 0.
3 ^ x = 3, en effet i ^ 0 = i.
x % 15 = 0, en effet 0 % i = 0.
3 * 0 = 0.
En conclusion, (3 ^ x) * (x % 15) = 0.