if (isdigit(ss[i-1])) { ... }
enum symbol_class {digit, consonant, other};
enum symbol_class class(char d) {
if (isdigit(d)) {
return digit;
}
...
return other;
}
...
f = class(ss[i-1]);
if (f == digit) { ... }
что серверу мы вроде как это подсунем тот же хеш, что и поймали
А я говорил про то, чтобы сам пароль был захешированным.
Почему Вы так упорно не хотите, чтобы пароль был не в хешированном виде, уходя от пользователя на сервер?
Это защищает пользователя от "утечки" открытого пароля (plain text) через "прослушку" сети и на стороне сервера: при возможной утечки БД.
Это намного лучше, чем отправка в plain text! Чтобы было "по-проще ловить" - можно использовать "примесь": рандомную вставку случайных символов в случайные позиции. И это уже будет вообще нереально восстановить, а сервер - спокойно проверит.
Соль нужна всегда, если хеширует клиент (думал, что это и так очевидно!)
тем, что пароль будет сложно восстановить как при перехвате запроса, так и при хищении БД сервера.
Там никогда не используется реальное ID, потому что ID зависит от контекста использования (какая интеграция и с каким сервисом)
И поверьте, этот хардкод будет одной из наименьших проблем в проекте - мы даже не знаем, с чего начинать рефакторинг, а надо и фичи пилить )