Если проблема касается безопасности, я бы не рекомендовал использовать идентификатор устройства в качестве пароля по следующим причинам:
- Это не секретная информация, и ее можно отправлять в виде простого текста во многих сетевых вызовах на многие серверы, что означает, что она может быть легко получена третьей стороной.
- Нельзя легко изменить, если злоумышленник получит его.
- Если телефон переходит из рук в руки, идентификатор остается прежним, что позволяет новому владельцу телефона войти в систему как предыдущий пользователь.
Альтернативный подход, очевидно, состоит в том, чтобы позволить пользователю выбирать свой собственный пароль, однако я предполагаю, что вы уже учли это и выбираете использовать идентификатор устройства, поскольку это делает работу с пользователем максимально удобной для пользователя.
Поэтому я бы порекомендовал генерировать uuid, когда пользователь устанавливает приложение, и хранить его в защищенном хранилище устройств (хранилище ключей / цепочка ключей). При первом запросе отправьте это на сервер вместе с идентификатором пользователя. Временный идентификатор сеанса должен быть сгенерирован и возвращен клиенту, который затем может быть использован для аутентификации последовательных запросов.
Также MD5 не следует использовать для хеширования паролей, так как он не устойчив к атакам методом перебора. Лучший выбор алгоритма - bcrypt или pbkdf2.