Amaro
Новичок
В общем, регистрируюсь, все хорошо, сервер хэширует пароль и вносит в базу.
Когда авторизоваться пытаюсь, постоянно пароль верный, но ввожу абсолютно разные.
Авторизация:
Регистрация:
Если не перезапускать сервер - пишет пароль неверный во всех случаях
Если перезапускать сервер - верный во всех случаях
Когда авторизоваться пытаюсь, постоянно пароль верный, но ввожу абсолютно разные.
Авторизация:
Код:
new checkpass[65];
SHA256_PassHash(inputtext, PlayerInfo[playerid][SALT], checkpass, 65);
if(strcmp(PlayerInfo[playerid][PASSWORD], checkpass, false, 64) == 0)
{
SCM(playerid, COLOR_RED, "ВЕРЕН УРААА!");
}
else
{
new string[47];
if(GetPVarInt(playerid, "WrongPassword") > 0)
{
format(string, sizeof(string), "Ошибка — {FFFFFF}Пароль неверный. Осталось %d попыток", GetPVarInt(playerid, "WrongPassword"));
}
if(GetPVarInt(playerid, "WrongPassword") == 0)
{
SCM(playerid, COLOR_RED, "Ошибка — {FFFFFF}Вы исчерпали лимит попыток входа.");
Kick(playerid);
}
ShowLogin(playerid);
}
Код:
{
if(!strlen(inputtext))
{
ShowRegistration(playerid);
return SCM(playerid, COLOR_RED, "Ошибка — {FFFFFF}Введите пароль для продолжения.");
}
if(!(8 <= strlen(inputtext) <= 32))
{
ShowRegistration(playerid);
return SCM(playerid, COLOR_RED, "Ошибка — {FFFFFF}Пароль должен состоять от 8-ми до 32-ух символов.");
}
new regex:rg_passwordcheck = regex_new("^[a-zA-Z0-9]{1,}$");
if(regex_check(inputtext, rg_passwordcheck))
{
new salt[11];
for(new i; i < 10; i++)
{
salt[i] = random(79) + 47;
}
salt[10] = 0;
SHA256_PassHash(inputtext, salt, PlayerInfo[playerid][PASSWORD], 65);
strmid(PlayerInfo[playerid][SALT], salt, 0, 11, 11);
SPD(playerid, DLG_REGEMAIL, DIALOG_STYLE_INPUT, ""SERVER"Электронная почта",
"Введите вашу настоящую электронную почту\n\
В случае утери вашего аккаунта, вы сможете восстановить его",
"Далее", "");
}
else
{
ShowRegistration(playerid);
regex_delete(rg_passwordcheck);
return SCM(playerid, COLOR_RED, "Ошибка — {FFFFFF}Пароль должен состоять из [a-z] [A-Z] [0-9]");
}
Если перезапускать сервер - верный во всех случаях
