Требование
Одно устройство Android, одна учетная запись. Чтобы запретить пользователю создавать несколько учетных записей на одном устройстве.
Что я сделал
Во время входа в систему с помощью telephonyManager.getDeviceId() я получаю номер IMEI устройства Android. Затем я проверяю это со всеми номерами IMEI, хранящимися в базе данных моего сервера. Но после столкновения
TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
String IMEINo = telephonyManager.getDeviceId();
У меня много поддельных номеров IMEI. Например, я проверил в https://www.imei24.com "272052651704884". Результат: "Данный IMEI 272052651704884 неверен. Контрольная сумма неверна. Последняя цифра номера IMEI генерируется на основе формулы Luhna".
Проведя множество исследований, я узнал, что если вы копируете приложение, используя Parallel Space или что-то подобное, telephonyManager.getDeviceId() возвращает поддельное значение.
Спустя 7 долгих месяцев я нашел решение этой проблемы. Это алгоритм Луня, который выполняет некоторые вычисления и сообщает, действителен ли IMEI или нет.
Что мне нужно: совет о том, следует ли мне слепо полагаться на алгоритм Луня или нет.