Есть приложение "СЕРВЕР", которому клиенты ( пользователи приложения "КЛИЕНТ")
посылают несекретные короткие сообщения типа "CООБЩЕНИЕ" (имя пользователя, идентификатор, строку ASCII, целое значение ~ 100 байт).
Как сказано, сообщения несекретные, но с высокой степенью гарантии должны быть некомпроментированными. "СЕРВЕР" должен быть уверен, что собщение от "КЛИЕНТ" пришло именно так каким, каким его отправил "КЛИЕНТ", и, разумеется, что его отправил имеенно "КЛИЕНТ", а не кто-нибудь другой и без "коррекции" по дороге. На приложение "КЛИЕНТ" пользователи хранят хеши своих паролей "Х". В точности такие же хеши "Х" есть для тех же пользователей и на "СЕРВЕР".
Разумно ли поступить таким образом?
КЛИЕНТ:
1) пользователь на "КЛИЕНТ" формирует сообщение "CХ" = "СООБЩЕНИЕ" + "Х"
2) получает новый хеш "XХ" для "CX"
3) формирует и посылает приложению "СЕРВЕР" сообщение "COОБЩЕНИЕ"+"XX"
СЕРВЕР:
1) заменяет в сообщении хвост "XX" на хеш "X" (сервер хранит хеши паролей, в том числе и для пользователя, имя которого указано в сообщении)
2) вычисляет "ХХ" и сравнивает его со значеним хвоста "XX", полученного в сообщении клиент "XX"